设置ld_library_path=dir dir 为 libssl.so 的目录,假设libssl.so 在 /home/lib/ 目录下 执行命令: export ld_library_path="/home/lib" 。
19.配置环境变量 vi /etc/profile i插入 添加以下三句export到文件最后 注意java_home的目录为你解压jdk的目录版本为你下载的jdk版本export java_home=/java/jdk1.7.0_79 export classpath=.:%java_home%/lib/dt.jar:%java_home%/lib/tools.jar export path=$path:$java_home/bin:wq 保存退出。
3. 再找默认库目录 /lib /usr/lib /usr/local/lib,这是当初compilegcc时写在程序内的。
三、动态链接时、执行时搜索路径顺序:
1. 编译目标代码时指定的动态库搜索路径;
2. 环境变量LD_LIBRARY_PATH指定动态库搜索路径,它指定程序动态链接库文件搜索路径;
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:data/home/billchen/lib
3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4. 默认的动态库搜索路径/lib;
5. 默认的动态库搜索路径/usr/lib。
四、静态库和动态链接库同时存在的问题:
当一个库同时存在静态库和动态库时,比如libmysqlclient.a和libmysqlclient.so同时存在时:
在Linux下,动态库和静态库同事存在时,gcc/g++的链接程序,默认链接的动态库。
可以使用下面的方法,给连接器传递参数,看是否链接动态库还是静态库。
-WI,-Bstatic -llibname //指定让gcc/g++链接静态库
使用:
gcc/g++ test.c -o test -WI,-Bstatic -llibname
-WI,-Bdynamic -llibname //指定让gcc/g++链接动态库
使用:
gcc -wall -std=gnu99-dtest_add -dtest_sub=1-i./test-add -i./test-sub -o test-add/test-add.o -c test-add/test-add.c。
gcc -wall -std=gnu99-dtest_add -dtest_sub=1-i./test-add -i./test-sub -o test-sub/test-sub.o -c test-sub/test-sub.c。
gcc -o test test.o test-add/test-add.o test-sub/test-sub.o。
1.使用gcc -s test.c 或者gcc -s test.c>out.txt。
如果要完全静态加在,使用-static参数,即将所有的库以静态的方式链入可执行程序,这样生成的可执行程序,不再依赖任何库,同事出现的问题是,这样编译出来的程序非常大,占用空间。
五、有关环境变量:
LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径
六、动态库升级问题:
在动态链接库升级时,
不能使用cp newlib.so oldlib.so,这样有可能会使程序core掉;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-90979-5.html
为了一己之利而冒天下之大不韪
我也是5s还在纠结要不要更新