让我解释一下情况。
我使用system g ++(在linux下)编译了一个c ++库。 然后构建一个cython模块,调用预编译库中的函数。构建cython模块是在anaconada venv下完成的(但是在venv中没有安装g ++。因此cython必须使用系统gcc / g ++)。 现在在相同的anaconda venv下,导入cython模块会导致错误:
mounted() {
let self = this;
...
}
似乎系统g ++编译的c库(libc_rd_halo.so)现在正在寻找一个anaconda g ++库。我没有在anaconda venv中安装g ++。
我可以通过使用anaconda g ++从头开始编译c库来解决问题。再次构建cython模块,然后我可以导入模块。 但我想让anaconda cython使用系统编译器,并在导入模块时查找系统编译器库。
我的问题是:
为什么anaconda cython默认会查找本地anaconda g ++,而不是系统编译器?这样做有什么好处吗?
如何让anaconda cython查找系统编译器库?
答案 0 :(得分:0)
为什么anaconda cython默认会查找本地anaconda g ++,而不是系统编译器?这样做有什么好处吗?
- 醇>
如何让anaconda cython查找系统编译器库?
因为使用一个版本的GCC编译的库只能与使用兼容的版本的GCC编译的其他库链接,正如您所发现的那样。
你没有。按上述方法,使用系统编译器构建的二进制文件可能会也可能不会与使用anaconda编译器构建的其他anaconda二进制文件一起使用。
如果您希望二进制文件使用系统库,那么您需要创建一个系统包,而不是一个anaconda包。系统包将只适用于该系统(和版本)。