从python编译Cpp失败,但在sh中没有

2024-04-27 19:21:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个cpp文件,它可以使用shell用g++很好地编译:

extern "C"{
  #include <quadmath.h>
}

inline char* print( const __float128& val)
{
  char* buffer = new char[128];
  quadmath_snprintf(buffer,128,"%+.34Qe", val);
  return buffer;
}
int main(){
    __float128 a = 1.0;
    print(a);
    return 0;
}

但是,当我试图通过pythonscrit编译它时,它失败了,并出现以下错误:

"undefined reference to quadmath_snprintf"

这里是python脚本的代码:

import commands
import string
import os
(status, output) = commands.getstatusoutput("(g++ test/*.c -O3 -lquadmath -m64)")

你知道怎么解决这个问题吗?谢谢


Tags: 文件importreturnincludebufferexternvalshell
1条回答
网友
1楼 · 发布于 2024-04-27 19:21:40

当你打开一个shell时,所有的东西都会自动初始化,对于你的问题来说最重要的是,环境变量已经设置好了。您最可能错过的是LIBRARY_PATH的定义,它是链接器用来查找与您指示它使用-lNAME标志链接的库相匹配的库的变量

链接器需要的是一个目录列表,它将在其中搜索匹配libNAME.{a,so}的文件。您也可以使用-L标志直接传递这些目录,但一般来说,您应该尝试使用CMake、Make或任何其他构建工具之类的程序

这将允许您访问find_packagetarget_link_libraries(CMake)等命令,分别查找、添加库到构建目标,而不必维护python来编译您的东西

相关问题 更多 >