linux 文本命令和eclipse下开发静态库和动态库

windows 和linux都有静态库和动态库,以前习惯在windows下开发动态库和静态库。对于linux下的库的路径不是很熟悉。
 特学习了一下linux 开发静态库和动态库库。
一:文本模式下的开发
参考博文
http://blog.csdn.net/liukun321/article/details/6912046
http://blog.donews.com/dukejoe/archive/2006/01/12/691864.aspx
1 静态库的开发
使用命令式开发
[yuj@localhost static_learn]$ vi static_test.cpp 
[yuj@localhost static_learn]$ vi static_test.h
[yuj@localhost static_learn]$ g++ -c static_test.cpp 
[yuj@localhost static_learn]$ ar r libTestAdd.a static_test.o
使用ar 命令生成静态库 。
ar命令 :
r参数 把文件插入到静态库文件中
d 从指定的静态库文件删除文件
m 把文件移到指定的文件中
a 把新的目标文件(.o)文件添加到静态库文件中之后
使用静态库
[yuj@localhost static_learn]$ vi static_main.cpp
编写测试文件,调用库中的喊声
[yuj@localhost static_learn]$ g++ static_main.cpp ./libTestAdd.a
或者
[yuj@localhost static_learn]$ g++ static_main.cpp -L. -lTestAdd
2 动态库的开发
[yuj@localhost static_learn]$ g++ -shared static_test.cpp -o libTestAdd.so
使用该动态库
[yuj@localhost static_learn]$ g++ static_main.cpp -lTestAdd -L.
[yuj@localhost static_learn]$ ./a.out
./a.out: error while loading shared libraries: libTestAdd.so: cannot open shared object file: No such file or directory
原因找不到该动态库。详解linux的头文件和库的寻找路径的方法
两个办法找到库
1 修改 /etc/ld.so.conf 配置文件 把当前路径加入进去 。执行/sbin/ldconfig 即可
2 修改环境变量
[yuj@localhost static_learn]$ export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
[yuj@localhost static_learn]$ ldd a.out 
linux-gate.so.1 =>  (0x00cea000)
libTestAdd.so => ./libTestAdd.so (0x00134000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x06d2b000)
libm.so.6 => /lib/libm.so.6 (0x003b0000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00dd0000)
libc.so.6 => /lib/libc.so.6 (0x001fa000)
/lib/ld-linux.so.2 (0x001d4000)
[yuj@localhost static_learn]$ ./a.out
执行成功

二: eclipse 图形界面开发
1 eclipse 设置 跟VC 的设置类似

Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries
添加库的名称 :Libraries (-l): shared

添加库的路径:Library search path (-L): 

静态库和动态库设置相同,但是动态库的话设置运行时会 需要在 /ect/ld.so.conf里面添加对应的路径,在运行/sbin/ldconfig
命令则可以运行



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值