当前位置: 技术问答>linux和unix
[急切求助]生成和调用.a文件问题。。。
来源: 互联网 发布时间:2016-09-21
本文导语: 生成的.a文件无法调用。。。 libtest1.c和libtest2.c生成libtest.a; main.c负责调用libtest.a中的两个函数。 依次编译: gcc -Wall -o libtest1.o -c libtest1.c gcc -Wall -o libtest2.o -c libtest2.c ar -rc libtest.a libtest1.o libtest2.o cpp libtest.a /usr/...
生成的.a文件无法调用。。。
libtest1.c和libtest2.c生成libtest.a;
main.c负责调用libtest.a中的两个函数。
依次编译:
gcc -Wall -o libtest1.o -c libtest1.c
gcc -Wall -o libtest2.o -c libtest2.c
ar -rc libtest.a libtest1.o libtest2.o
cpp libtest.a /usr/lib/
cpp libtest.h /usr/include/
ldconfig
/*主函数调用.a文件时,*/
/*提示找不到函数test_add(int a)和test_sub(int a)???*/
gcc -Wall -o libtest-example main.c -ltest
用到的文件源码如下。。。
/****** libtest.h ******/
int test_add(int a);
int test_sub(int a);
/****** libtest1.c ******/
#include
#include "libtest.h"
int test_add(int a)
{
return (a+1);
}
/****** libtest2.c ******/
#include
#include "libtest.h"
int test_sub(int a)
{
return (a-1);
}
/****** main.c ******/
#include
#include "libtest.h"
int main( void )
{
int a = 7;
printf( "%d => %dn",a,test_add(a));
printf( "%d => %dn",a,test_sub(a));
return 0;
}
|
gcc -Wall -o libtest-example main.c -static -L/usr/lib -ltest
|
试试gcc -Wall -o libtest-example main.c -L/usr/lib -ltest
另外,gcc命令的详细输出信息贴上来看看..
另外,gcc命令的详细输出信息贴上来看看..
|
拷贝应该是cp吧,而不是什么cpp.
你生成.a文件的命令没有什么问题吧,试试ar ruv libtest.a libtest1.o libtest2.o
你生成.a文件的命令没有什么问题吧,试试ar ruv libtest.a libtest1.o libtest2.o
|
或者你把那个libtest.a换个名字试下,看起来不该出现这个问题的。
|
运行命令:
nm /usr/lib/libtest.a看一下输出。
nm /usr/lib/libtest.a看一下输出。
|
写个makefile文件,这样省事的得!
main:main.o test_add.o test_sub.o
.............
|
哦,用makefile试试吧!