您的位置:首页 > 其它

gcc与g++编译链接库文件兼容性

2016-02-23 19:25 274 查看
使用静态库的时候,gcc编译出来的静态链接库g++编译代码的时候有时候链接不了,而g++编译的静态链接库gcc在编译的时候有时候也使用不了。

下面举例说明:

编写库文件:

hello.h

#ifndef HELLO_H_
#define HELLO_H_

#include <stdio.h>

void HelloFunc();

#endif  /*HELLO_H_*/


hello.c

#include "hello.h"

void HelloFunc()
{
printf("Hello World!\n");
}
hello.cc

#include "hello.h"

void HelloFunc()
{
printf("Hello World!\n");
}


测试代码:

main.c

#include <stdio.h>

int main() {

printf("Hello World!\n");

return 0;
}


main.cc

#include <stdio.h>

int main() {

printf("Hello World!\n");

return 0;
}


test.c

#include "hello.h"

int main()
{
HelloFunc();

return 0;
}


test.cc

#include "hello.h"

int main()
{
HelloFunc();

return 0;
}


Makefile

gcc -o Test test.cc -I.../include/ -L.../lib/ -lhello
gcc -o Test test.c  -I.../include/ -L.../lib/ -lhello
g++ -o Test test.cc -I.../include/ -L.../lib/ -lhello
g++ -o Test test.c  -I.../include/ -L.../lib/ -lhello

gcc main.c
gcc main.cc
g++ main.c
g++ main.cc


结论:

1.gcc编译hello.c形成libhello.a

gcctest.c正确
gcctest.cc错误
g++test.c错误
g++test.cc错误
2.g++编译hello.cc形成libhello.a

gcctest.c错误
gcctest.cc正确
g++test.c正确
g++test.cc正确
3.gcc编译hello.c形成libhello.so

gcctest.c正确
gcctest.cc错误
g++test.c错误
g++test.cc错误
4.g++编译hello.cc形成libhello.so

gcctest.c错误
gcctest.cc正确
g++test.c正确
g++test.cc正确
建议:

使用g++编写静态链接库和动态链接库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gcc g++ 链接库