我见过很多以下参考资料: command to compile c files with .a files
我正在尝试编译.cpp
文件。除此之外,我还有.h
个文件和2个.a
文件。
g++ 1_SDKinfo.cpp -L. -l l* -o a.out -v
g++ 1_SDKinfo.cpp -L ../Lib/mac32_64 -lR3DSDK -lR3dSDKllvm -o a.out -v
我已经尝试过很多这种变体,但不断出现像
这样的错误ld: library not found for -llibR3DSDK.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
1_SDKinfo.cpp R3DSDKDecoder.h R3DSDKOpenCL.h REDCuda.dylib REDR3D.dylib
R3DSDK.h R3DSDKDefinitions.h R3DSDKRocket.h REDDecoder.dylib libR3DSDK.a
R3DSDKCuda.h R3DSDKMetadata.h R3DSDKStream.h REDOpenCL.dylib libR3DSDKllvm.a
我应该如何编译这个? 编辑:mac os
答案 0 :(得分:0)
首先,您要链接的库位于当前目录中(似乎),因此您应该使用.
作为-L
的参数,将当前目录添加到图书馆搜索路径。
第二个问题是库的名称 不 与文件名相同。对于名为libR3DSDK.a
的文件,库名称为R3DSDK
。链接器会自动添加lib
前缀和.a
后缀。
所以你的命令应该像
g++ 1_SDKinfo.cpp -L. -lR3DSDK -o a.out -v
或的
g++ 1_SDKinfo.cpp libR3DSDK.a -o a.out -v
第一个命令使用-L
和-l
选项命名库,以及查找它的路径。第二个命令不使用任何特殊选项,而是列出文件以链接。