编译包含自定义文件的代码,该如何处理
编译包含自定义文件的代码hello.h头文件C/C++ codevoid msg(void)hello.c文件C/C++ code#include stdio.
编译包含自定义文件的代码
hello.h头文件
C/C++ codevoid 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=.
[解决办法]头文件的作用都是有的,它只是函数的声明
函数的具体实现要么在其他源文件中,要么在库文件中