gcc 库的链接问题
来源:互联网 发布:java打印空心菱形 编辑:程序博客网 时间:2024/05/16 15:46
测试项目共三个文件,内容如下:
add.c
int add(int a, int b){return a+b;}
sum.c
extern int add(int a, int b);int sum(int a, int b, int c){return add(a, add(b, c));}
main.c
#include <stdio.h>extern int add(int a, int b);extern int sum(int a, int b, int c);void main(void){//printf("a+b=%d\n", add(1,2));printf("a+b+c=%d\n", sum(1, 2, 3));return;}
add.c sum.c 各编译成静态库
LinuxUbuntu:~/testlib$ gcc -c -o add.o add.c
LinuxUbuntu:~/testlib$ ar rcs add.a add.c
LinuxUbuntu:~/testlib$ gcc -c -o sum.o sum.c
LinuxUbuntu:~/testlib$ ar rcs sum.a sum.c
链接,出现问题
LinuxUbuntu:~/testlib$ gcc -c -o main.o main.c
#include <stdio.h>extern int add(int a, int b);extern int sum(int a, int b, int c);void main(void){printf("a+b=%d\n", add(1,2));printf("a+b+c=%d\n", sum(1, 2, 3));return;}
LinuxUbuntu:~/testlib$ gcc main.o add.a sum.a -o main
sum.a(sum.o): In function `sum':
sum.c:(.text+0x14): undefined reference to `add'
sum.c:(.text+0x23): undefined reference to `add'
collect2: ld returned 1 exit status
当把main.c 的 printf("a+b=%d\n", add(1,2)); 的注释符去掉,链接成功
0 0
- gcc 库的链接问题
- GCC的链接问题
- gcc 链接库的顺序问题
- gcc静态库链接的问题
- gcc 链接库的顺序问题
- gcc库的链接顺序导致编译出错的问题
- 一个诡异的gcc共享库的链接问题
- 由于gcc静态链接库顺序引起的问题
- 记boost在gcc的一个库链接问题generic_category()
- gcc编译器的链接、装载问题
- cygwin gcc 动态链接库问题
- gcc静态链接问题
- linux下GCC动态库的链接
- gcc 链接库的时候 位置 出错
- gcc链接动态库时,两个动态库中符号重名的问题
- 在linux gcc 64位平台编译动态链接库时出现的问题
- gcc编译参数的顺序问题——关于static和动态链接库
- 折腾gcc/g++链接时.o文件及库的顺序问题
- 工厂方法模式
- Android ListView工作原理完全解析,带你从源码的角度彻底理解
- Eclipse使用Ant编译提示Class not found: javac1.8【转载】
- STL之map和set
- java.net.BindException: Port in use: 0.0.0.0:50070
- gcc 库的链接问题
- Hadoop2.6.0集群安装部署
- 最大子段和
- RS-485设计指南 (TI:SLLA272B-2008.05)
- java Abstract(抽象)详解
- 常用数据统计
- 自定义消息的发送和接收的方法
- INSTALL_FAILED_DUPLICATE_PERMISSION
- 遇到问题你可以 at 的那些 Android 开发者