linux停创建静态库出错
linux下创建静态库出错
我按照《linux程序设计》的实验操作实现静态库的建立:
准备好测试代码lib.h、bill.c和program.c;
#include <stdio.h>
void bill(char* arg){
printf("bill:we passed %s\n",arg);
}
以上为bill.c的代码。
#ifndef _LIB_H
#define _LIB_H
void bill(char*);
void fred(int);
#endif
以上为lib.h的代码。
[cpp] view plaincopyprint?
#include <stdlib.h>
#include "lib.h"
int main(){ //这里的main肯定没拼错
bill("hello,world");
exit(0);
}
以上为program.c的代码。
编译多个源文件
在系统提示符下键入以下命令得到bill.o文件。
# gcc -c bill.c
同理编译program
#gcc –c program.c
将两个文件链接成一个.o文件。
#gcc –o program bill.o program.o
执行到这一步的时候出现program.o: In function `main':
program.c:(.text+0x11): undefined reference to `bill'
collect2: error: ld returned 1 exit status
------解决方案--------------------
库是一个独立的模块而已!提供别人使用而已!
不要加进入main函数!
生成.a静态库库不是 ar命令么?
------解决方案--------------------
bill.c里面少了#include"bill.h"吧
再说你这也不是生成静态库,没有ar打包文件啊
------解决方案--------------------
楼上正解,需要用ar将bill.o创建为bill.a,然后再用gcc时链接bill.a就可以了
------解决方案--------------------
ar -r bill.a bill.o
gcc program.o billa
------解决方案--------------------
先用gcc -c把所有文件都编译成.o文件
再把所有.o文件使用ar r libxxxx.a *.o 生成你想要静态库
------解决方案--------------------
我按照《linux程序设计》的实验操作实现静态库的建立:
准备好测试代码lib.h、bill.c和program.c;
#include <stdio.h>
void bill(char* arg){
printf("bill:we passed %s\n",arg);
}
以上为bill.c的代码。
#ifndef _LIB_H
#define _LIB_H
void bill(char*);
void fred(int);
#endif
以上为lib.h的代码。
[cpp] view plaincopyprint?
#include <stdlib.h>
#include "lib.h"
int main(){ //这里的main肯定没拼错
bill("hello,world");
exit(0);
}
以上为program.c的代码。
编译多个源文件
在系统提示符下键入以下命令得到bill.o文件。
# gcc -c bill.c
同理编译program
#gcc –c program.c
将两个文件链接成一个.o文件。
#gcc –o program bill.o program.o
执行到这一步的时候出现program.o: In function `main':
program.c:(.text+0x11): undefined reference to `bill'
collect2: error: ld returned 1 exit status
linux
库
------解决方案--------------------
库是一个独立的模块而已!提供别人使用而已!
不要加进入main函数!
生成.a静态库库不是 ar命令么?
------解决方案--------------------
bill.c里面少了#include"bill.h"吧
再说你这也不是生成静态库,没有ar打包文件啊
------解决方案--------------------
楼上正解,需要用ar将bill.o创建为bill.a,然后再用gcc时链接bill.a就可以了
------解决方案--------------------
ar -r bill.a bill.o
gcc program.o billa
------解决方案--------------------
先用gcc -c把所有文件都编译成.o文件
再把所有.o文件使用ar r libxxxx.a *.o 生成你想要静态库
------解决方案--------------------