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就这样了
这一部分组要的是.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就这样了
相关文章推荐
- linux下动态链接问题(.so文件的编写与调用)
- 【转贴】Linux平台Makefile文件的编写基础
- Linux平台Makefile文件的编写基础篇
- JNI 编写动态链接库 HelloNative 详细过程(也即用Java和C在Linux下动态生成并使用so文件过程)
- Linux下编写makefile文件
- Makefile学习笔记1:Linux平台Makefile文件的编写基础篇(zz)
- 关于linux中Makefile文件的编写(简单例子)
- Linux下编写makefile文件
- Linux平台Makefile文件的编写基础篇和GCC参数详解
- linux下动态链接问题(so文件的编写与调用)
- Linux平台Makefile文件的编写基础篇
- (转)Linux下编写C程序( GCC )(hello,world)
- apache module helloworld, Linux平台使用C编写网页 CGI helloword 实例
- Linux下编写makefile文件
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Unix/Linux 平台Makefile文件的基础编写
- Linux平台Makefile文件的编写基础篇 (转载)