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

参考技术A >gcc -L. main.c -o app
>定义在头文件中的函数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报错的主要内容,如果未能解决你的问题,请参考以下文章

在 gcc Linux 中将静态库链接到动态库

怎么把自己写的函数编译到动态库中

Linux静态库生成指南

Linux动态链接和静态链接简析

Linux gcc/g++编译链接头文件和库(动态库.so 和 静态库.a)

Linux中链接库去掉后缀名,gcc如何区分链接的是动态库还是静态库?