当前位置: 技术问答>linux和unix
一个非常菜菜的问题,关于UNIX下.o文件的使用,急!
来源: 互联网 发布时间:2016-01-06
本文导语: 现在我有个已编译过的.o文件,我要使用里面的函数连接到其他.c文件中编译, 如果不行 还需要什么文件 请教怎么使用 谢谢 | 我试了一下,在我的机器上没有你说的问题。我的代码如下,...
现在我有个已编译过的.o文件,我要使用里面的函数连接到其他.c文件中编译,
如果不行 还需要什么文件
请教怎么使用 谢谢
如果不行 还需要什么文件
请教怎么使用 谢谢
|
我试了一下,在我的机器上没有你说的问题。我的代码如下,看跟你的是否一样:
---- a.c ----
#include
int c() {
printf("ccccccn");
}
int a() {
printf("aaaaaan");
}
gcc -o liba.so -shared a.c
---- b.c ----
#include
int b() {
printf("bbbbbbn");
}
int c() {
printf("c2c2c2n");
}
gcc -o liba.so -shared b.c
---- main.c ----
#include
extern int a();
extern int b();
extern int c();
int main() {
a();
b();
c();
}
gcc -o main main.c -L. -lb -la
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./main
a和b的顺序不同,调用的函数c也不同
gcc版本是3.3.5
---- a.c ----
#include
int c() {
printf("ccccccn");
}
int a() {
printf("aaaaaan");
}
gcc -o liba.so -shared a.c
---- b.c ----
#include
int b() {
printf("bbbbbbn");
}
int c() {
printf("c2c2c2n");
}
gcc -o liba.so -shared b.c
---- main.c ----
#include
extern int a();
extern int b();
extern int c();
int main() {
a();
b();
c();
}
gcc -o main main.c -L. -lb -la
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./main
a和b的顺序不同,调用的函数c也不同
gcc版本是3.3.5
|
你可以试一下我的代码。如果通过,可以看看跟你的代码的区别。
如果你还是不行,你可以看看ld的帮助,man ld即可,这里是中文的:
http://huqingyu.cnblogs.com/archive/2005/02/28/110468.html
其中有一个参数muldefs有点相关,你可以试试。
可以这样加:
gcc .... -z muldefs ....
如果你还是不行,你可以看看ld的帮助,man ld即可,这里是中文的:
http://huqingyu.cnblogs.com/archive/2005/02/28/110468.html
其中有一个参数muldefs有点相关,你可以试试。
可以这样加:
gcc .... -z muldefs ....