双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

linux下gcc怎么编译动态库以及怎么像自带库一样使用自制的库

慧钦 慧钦 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我使用的是ubuntu系统,以下是我的信息:
Linux localhost 3.2.0-39-generic-pae #62-Ubuntu SMP Wed Feb 27 22:25:11 UTC 2013 i686 i686 i386 GNU/Linux
我想自己写了个函数,以后就想使用标准库中函数一样使用它(像使用read(),write()一样),
我自己试验了一个,写了一个add函数

文件add.c:
int add(int a, int b)
{
return a + b;
}



然后对add.c文件进行编译
gcc -fPIC -shared -o libadd.so add.c

测试程序test.c
#inclucde <stdio.h>
int main()
{
int a = add(1, 2);
return 0;
}


然后编译
gcc -o test test.c -L. -ladd

运行./tesst 通过

如果我直接编译 gcc test.c ,出错
/tmp/ccdwGdzl.o: In function `main':
test.c:(.text+0x19): undefined reference to `add'
collect2: ld returned 1 exit status

我想问的是:
1.要怎么才能在以后的函数中直接调用add(a, b),编译时直接 gcc test.c,而不用指定什么链接的。
2.还有与add对应的头文件怎么写
...全文

相关推荐

boost库1.68版本Linux下编译的动态库和静态库

Linux系统下使用gcc 5.3编译器编译的boost库1.68版本的动态库和静态库,多线程参数编译,经测试可用

pursuingdream_2014

Linux 如何使用gcc生成静态库和动态库

Linux 如何使用gcc生成静态库和动态库,使用GCC编译生成静态库和动态库的方法

u010908166

Linux下Gcc生成和使用静态库和动态库详解

Linux下Gcc生成和使用静态库和动态库详解Linux下Gcc生成和使用静态库和动态库详解

lixiaoqiang0327

linux的ubuntu上如何编译C和C++代码写的动态库,以及调用执行

linux的ubuntu上如何编译C和C++代码写的动态库,以及调用执行

jernymy

linux下gcc编译器的使用

linux下gcc编译器的使用 在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一 位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。 开放、自由和灵活是Linux的魅力所在,而这一点在GCC上的体现就是程序员通过它能够更好地控制整个编译过程。在使用GCC编译程序时,编译过程可以被细分为四个阶段: ◆ 预处理(Pre-Processing) ◆ 编译(Compiling) ◆ 汇编(Assembling) ◆ 链接(Linking)

zhangyongfengmyson
评论 4
收藏 已收藏
分享
返回顶部
慧钦
Linux/Unix社区 23,224 成员 74,535 内容