日期:2014-05-16  浏览次数:20580 次

求助 关于linux 动态库的问题
小弟写了个简单的hello.c 文件内容如下
#include <stdio.h>

int  fun()
{
        printf("hello world\n");
        return 0;
}
将其编译为动态库 gcc -o libhello.so -fPIC -shared hello.c 
然后写了个测试程序 main.c  内容如下
#include <stdio.h>
int main()
{
        fun();
        return 0;
}
接下来编译为可执行程序 gcc -o main -L. -lhello main.c
报错
/tmp/ccOjZgoi.o: In function `main':
main.c:(.text+0x7): undefined reference to `fun'
collect2: ld returned 1 exit status

但是 我这样写 gcc -o main libhello.so success
请问这是什么问题啊
Linux GCC 动态库

------解决方案--------------------
hello.c有没有对应的hello.h呀
main.c下是不是需要#include <hello.h>呀!
------解决方案--------------------
sudo cp libhello.so /lib 然后在编译main.c
------解决方案--------------------
嗯,就是因为系统默认的没找到这个库,楼上正解
------解决方案--------------------
没见过这种写法 不过求普及
------解决方案--------------------
main.c加声明extern int fun();