【发布时间】:2016-03-23 03:52:32
【问题描述】:
当我尝试使用 gcc 命令编译带有静态库“t1”的测试程序时,该库由我自己存档。
我用来归档静态库的命令如下:
ar rcv libt1.a t1.o
使用以下命令得到一个错误:
gcc -L. -static -lt1 t.c -o t
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
但是,如果我像这样删除“-static”:
gcc -L. -lt1 t.c -o t
编译成功。我得到了正确的结果。
但是我搜索了很多,发现其他人使用'-static',他们没有得到错误。所以,请帮我弄清楚。
【问题讨论】:
-
-static不需要链接到静态库,而是静态链接到 C/C++ 运行时库,AFAICT 不是您想要实现的;你可以没有它。对了,你为什么要把.c文件放到静态库中? -
@MatteoItalia 这是一个写入错误,我的意思是“t1.o”。
-
gcc链接器从左到右检索/处理命令行参数,所以我很惊讶这两种方法都有效。 IE。-L和-l应该在行尾。
标签: c gcc static-linking