当前位置: 技术问答>linux和unix
关于linux dll加载的问题???
来源: 互联网 发布时间:2016-05-05
本文导语: 我编写了一个动态库,想验证其有效性,但出现了一些问题.请大虾们指点一下: 我的代码如下: /* lt.c * */ #include void myprint(void) { printf("Linux library test!n"); } /* lt.h * */ ...
我编写了一个动态库,想验证其有效性,但出现了一些问题.请大虾们指点一下:
我的代码如下:
/* lt.c
*
*/
#include
void myprint(void)
{
printf("Linux library test!n");
}
/* lt.h
*
*/
void myprint(void);
/* test.c
*
*/
#include "lt.h"
int main(void)
{
myprint();
return 0;
}
做成动态库:
做成动态库 liblt.so 。
1. $ gcc -c lt.c -o lt.o
2. $ gcc -shared -Wall -fPIC lt.o -o liblt.so
连接动态库:
gcc -o test test.c -L./ -llt
然后把liblt.so拷到/usr/lib目录下.
当执行测试时,出现了下列信息,不知道是什么原因:
./test
./test: error while loading shared libraries: /usr/lib/liblt.so: cannot restore segment prot after reloc: Permission denied
我的代码如下:
/* lt.c
*
*/
#include
void myprint(void)
{
printf("Linux library test!n");
}
/* lt.h
*
*/
void myprint(void);
/* test.c
*
*/
#include "lt.h"
int main(void)
{
myprint();
return 0;
}
做成动态库:
做成动态库 liblt.so 。
1. $ gcc -c lt.c -o lt.o
2. $ gcc -shared -Wall -fPIC lt.o -o liblt.so
连接动态库:
gcc -o test test.c -L./ -llt
然后把liblt.so拷到/usr/lib目录下.
当执行测试时,出现了下列信息,不知道是什么原因:
./test
./test: error while loading shared libraries: /usr/lib/liblt.so: cannot restore segment prot after reloc: Permission denied
|
权限不够,试试sudo ./test
如果还不行,就参考
http://blog.csdn.net/cf_journey/archive/2008/05/28/2489257.aspx
如果还不行,就参考
http://blog.csdn.net/cf_journey/archive/2008/05/28/2489257.aspx
|
程序和命令没问题
主要是找不到库。
1)第一种方法试试,运行ldconfig命令,更新cache。
2)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib
还可以参考:
http://www.cppblog.com/true/archive/2007/03/27/20667.html