读书人

编译包含自定义文件的代码,该如何处理

发布时间: 2012-06-11 17:42:22 作者: rapoo

编译包含自定义文件的代码
hello.h头文件

C/C++ code
void msg(void);


hello.c文件
C/C++ code
#include <stdio.h>#include <stdlib.h>#include "hello.h"void msg(void){  printf("%s\n","hello world!");}


test.c文件
C/C++ code
#include "hello.h"int main(void){  msg();  return 0;}


如果用gcc只编译test.c,会提示找不到msg()函数的定义(gcc test.c -o test.out),只能test.c和hello.c一起编译(gcc hello.c test.c -o test.out),但这样hello.h文件就失去其意义。我想像调用标准库函数一样,只加头文件即可把函数的实现链接进来,如何做呢?谢谢。


[解决办法]
hello.c做成动态库。。。。。。。。。。。。。
[解决办法]
gcc -c -o test.o test.c
gcc -c -o hello.o hello.c
gcc -o main test.o hello.o

[解决办法]
gcc -shared -fPIC hello.c -o libhh.so -g
gcc test.c -g -lhh -L. -Wl,-rpath=.
[解决办法]
头文件的作用都是有的,它只是函数的声明

函数的具体实现要么在其他源文件中,要么在库文件中

读书人网 >C语言

热点推荐