linux自己写的静态库gcc报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux自己写的静态库gcc报错相关的知识,希望对你有一定的参考价值。
gcc -L. main.c -o app 定义在头文件中的函数main函数调用 为未定义 undefined reference to `add'
-l选项更离谱如下
gcc -l/home/zizz/linuxc/lib static_lib.a main.c -o app
报错:/usr/bin/ld: cannot find -l/ gcc main.c -static ./static_lib.a -o app
只有-static选项能编译通过,为什么呢?
gcc main.c -static ./static_lib.a -o ap p
>定义在头文件中的函数main函数调用 为未定义
>undefined reference to `add'
改成gcc -L. main.c -lstatic_lib -o app
(同时你的.o文件要命名为libstatic_lib.a, 这是-l选项搜索的文件名模式)
-L 仅仅添加搜索路径, 并不会自动添加链接库
-l选项更离谱如下
gcc -l/home/zizz/linuxc/lib static_lib.a main.c -o app
报错:/usr/bin/ld: cannot find -l/ gcc main.c -static ./static_lib.a -o app
(同上, -l的使用方法不对)
只有-static选项能编译通过,为什么呢?
gcc main.c -static ./static_lib.a -o ap p
(这个好像应该把-static去了也可以吧 -> gcc main.c ./static_lib.a -o app)追问
[root@FIsh lib]# ls
main.c main.cpp~ static_lib.c static_lib.o
main.c~ static_lib.a static_lib.h
[root@FIsh lib]# gcc -L. main.c -lstatic_lib.a -o app
/usr/bin/ld: cannot find -lstatic_lib.a
collect2: ld returned 1 exit status
还是不通过
~~~~~麻烦你原样输入命令好吗!!!!!!!
我说了是把static_lib.a重命名为libstatic_lib.a, 然后-l选项是-lstatic_lib(我没有少打后缀名!!!!!)
(btw, 为啥要用root~~~~~~~~~)
以上是关于linux自己写的静态库gcc报错的主要内容,如果未能解决你的问题,请参考以下文章