使用.a文件编译简单的C ++文件?

时间:2017-11-05 23:52:21

标签: c++ gcc

我见过很多以下参考资料: 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

1 个答案:

答案 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选项命名,以及查找它的路径。第二个命令不使用任何特殊选项,而是列出文件以链接。