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

来源:互联网 发布:通过mac地址查找设备 编辑:程序博客网 时间:2024/06/09 23:03

代码部分的说明请参考上一篇 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就这样了

0 0