当前位置: 技术问答>linux和unix
gcc 问题!谢谢大侠了!
来源: 互联网 发布时间:2016-09-17
本文导语: 现在有三个文件 hash.h hash.c 和topn.c topn.c中用到了hash.c中的函数,现在想把topn.c编译成函数库文件,怎么做啊! 首先 gcc -fPIC -shared hash.c -o libhash.so 把hash.c编译成库文件 然后 cp libhash.so /usr/lib ...
现在有三个文件 hash.h hash.c 和topn.c
topn.c中用到了hash.c中的函数,现在想把topn.c编译成函数库文件,怎么做啊!
首先 gcc -fPIC -shared hash.c -o libhash.so 把hash.c编译成库文件
然后 cp libhash.so /usr/lib
为什么还是不行啊
topn.c中用到了hash.c中的函数,现在想把topn.c编译成函数库文件,怎么做啊!
首先 gcc -fPIC -shared hash.c -o libhash.so 把hash.c编译成库文件
然后 cp libhash.so /usr/lib
为什么还是不行啊
|
参数中要指定,或者使用参数-lhash
|
-lhash指定了吗?
|
1、在编译时:
指定系统默认的库目录不是指让编译器自动到这个目录中去找需要的库。而是告诉编译器需要连接动态库的时候到这个默认的目录下去找用-lxxx选项定义的库。程序要用到哪些库,需要用-lxxxx来定义
2、在运行时:
由于编译的时候指定了需要连接的目录和库文件。所以运行时,会直接到默认目录和指定的目录中去找相关的库文件(用ldd命令可以看到每个可执行程序所依赖的库文件)。
指定系统默认的库目录不是指让编译器自动到这个目录中去找需要的库。而是告诉编译器需要连接动态库的时候到这个默认的目录下去找用-lxxx选项定义的库。程序要用到哪些库,需要用-lxxxx来定义
2、在运行时:
由于编译的时候指定了需要连接的目录和库文件。所以运行时,会直接到默认目录和指定的目录中去找相关的库文件(用ldd命令可以看到每个可执行程序所依赖的库文件)。