您的位置:首页 > 运维架构 > Linux

linux 下helloworld .so makefile文件编写菜鸟记录

2014-08-10 15:58 477 查看
代码部分的说明请参考上一篇 http://blog.csdn.net/zdy10326621/article/details/38470285
这一部分组要的是.so的生成和链接使用

#makefile文件

obj = program.c

libobj=lib.h bill.c fred.c

libpath=/home/zengdengyi/桌面/liunx/linux/chapter01/libtest.so

#all 表示执行这两个命令

all:libtest program

libtest:$(libobj)

@gcc $(libobj) -fPIC -shared -o libtest.so

program: $(obj)

@gcc $(obj) -L. $(libpath) -o program

gcc $(libobj) -fPIC -shared -o libtest.so 这个命令表示将lib.h bill.c fred.c 这三个文件编译成.so库

gcc $(obj) -L. $(libpath) -o program 将program.c和.so库文件编译成可执行文件program

网上看到的多数使用

gcc $(obj) -L. -ltest -o program 这可以编译生成test可移文件program

但是在ldd program 产看链接是否承购的时候都是会报错找不到.so库

问度娘看了一堆高手的文章知道是个什么原因,但是在linux下配置环境变量,这对菜鸟来说还是很吃力的,所以可以直接的把路径写死

libpath=/home/xxx/桌面/liunx/linux/chapter01/libtest.so

这就是我项目所在文件的路径,.so就在这里

当然在高手眼里这很菜,但是对于菜鸟来说能最简单的看到效果就是学习的动力,就想搞懂一个问题,结果绕出N多个问题得不偿失,

有动力了才有耐心一个个问题解决

makefile文件只要换成你电脑项目所在的路径就可以直接make

生成可执行程序program

ldd program 也不会报找不到动态库的路径的问题证明链接动态库成功

当然想看运行结果还是需要使用gdb program

run

运行结果

quit

退出gdb

linux 下编译最简单的.so就这样了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: