从python编译Cpp失败,但不会在shell中失败
Cpp compilation from python fail but not in the shell
我有一个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;
}
然而,当我试图通过python
脚本编译它时,它失败了,出现以下错误:
"对quadmath_snprintf的未定义引用"
这里是python
脚本的代码:
import commands
import string
import os
(status, output) = commands.getstatusoutput("(g++ test/*.c -O3 -lquadmath -m64)")
你知道怎么解决这个问题吗?谢谢。
当您打开一个shell时,会为您静默初始化所有的东西,对于您的问题最重要的是,会设置环境变量。您最有可能忽略的是LIBRARY_PATH
的定义,这是链接器使用的变量,用于查找与使用-lNAME
标志指示它链接的库相匹配的库。
链接器需要的是一个目录列表,它将在其中搜索与libNAME.{a,so}
匹配的文件。你也可以直接使用-L
标志传递这些目录,但一般来说,你应该尝试使用CMake, Make或任何其他构建工具。
这将给你访问命令像find_package
和target_link_libraries
(CMake),分别查找,添加库到你的构建目标,而不必维护你的python来编译你的东西。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 如何通过cpp程序运行shell脚本
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- LibGit2 SSH身份验证失败
- 如何让LLDB在成功时退出,在失败时等待
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 从python编译Cpp失败,但不会在shell中失败