关于linux下连接动态库问题

askss11 2014-04-05 01:14:41
1.在我当前目录下有libSDL2-2.so.0(动态库)和test.c这两个文件,test.c要连接SDL动态库,编译选项:
gcc test.c ./libSDL2-2.so.0
在编译的时候指定了动态库,但是在执行./a.out时提示:
./a.out: error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory
ldd a.out输出:
linux-gate.so.1 => (0xb777c000)
libSDL2-2.0.so.0 => not found
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75a9000)
/lib/ld-linux.so.2 (0xb777d000)
即SDL这个库没有找到,但是我在编译test.c的时候已经指定了SDL动态库,不应该会找不到啊
2.为了验证上个问题,自己又编了个动态库
function.c:
#include <stdio.h>
void function(void)
{
printf("hello world\n");

}
my.c:
void function(void);
int main(void)
{
function();

return 0;

}
<1>首先编译function.c为动态库:gcc -shared -fPIC function.c -o function.so
生成function.so动态库
<2>编译my.c: gcc my.c ./function.so
生成a.out
ldd a.out
linux-gate.so.1 => (0xb77a4000)
./function.so (0xb779e000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75ce000)
/lib/ld-linux.so.2 (0xb77a5000)
发现function.so是有地址的

执行./a.out能够正确打印出hello world
3.为什么第一个连接SDL库的时候不行??而连接function.so的时候却行?二个的操作步骤都一样啊?
还请高手解答下,谢谢!!
...全文
182 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
长天1987 2014-04-19
  • 打赏
  • 举报
回复
是不是环境变量没弄好export LD_LIBRARY_PATH=. 试试
tommwq 2014-04-05
  • 打赏
  • 举报
回复
gcc -R
tommwq 2014-04-05
  • 打赏
  • 举报
回复
LD_LIBRARY_PATH /etc/ld.so.conf ldconfig

69,455

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧