Compiles error:Undefined reference, which is caused mainly by dependency with libraries?
Compiles error:Undefined reference, which is caused mainly by dependency with libraries?
最近我遇到了一个几乎让我抓狂的c++编译错误。输出信息是
(/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: 未定义的符号引用 '__libc_start_main@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libc.so.6:添加符号时出错:命令行中缺少 DSO
这不是对 `main' 的未定义引用,要小心。)
基本情况很简单。库 B 依赖于库 C。可执行文件 A 依赖于库 B,因此依赖于库 C。
下面是我的代码,也很简单。
**c.h**
void kk();
**c.cpp**
#include <iostream>
using namespace std;
void kk()
{
cout<<"111"<<endl;
}
**b.h**
#include "c.h"
void pp();
**b.cpp**
#include "b.h"
void pp()
{
kk();
}
**a.cpp**
#include "b.h"
int main()
{
pp();
}
这是我的编译过程:将c && b分别做成一个共享库,然后建一个
通过link反对他们。
1. g++ -fpic -shared c.cpp -o libc.so
2. g++ -fpic -shared b.cpp -o libb.so
3. g++ a.cpp -o a -lb -lc -L.
此外,我尝试了很多方法来解决这个问题。 None 成功了。而且我发现在最后一步,如果我没有link library c,输出的是same.It 好像我最后没能link c,但是我就是做了,谁知道原因。 g++ 版本??
您的 libc.so
与 glibc
安装的冲突。您需要更改为使用其他名称
最近我遇到了一个几乎让我抓狂的c++编译错误。输出信息是 (/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: 未定义的符号引用 '__libc_start_main@@GLIBC_2.2.5' //lib/x86_64-linux-gnu/libc.so.6:添加符号时出错:命令行中缺少 DSO
这不是对 `main' 的未定义引用,要小心。)
基本情况很简单。库 B 依赖于库 C。可执行文件 A 依赖于库 B,因此依赖于库 C。 下面是我的代码,也很简单。
**c.h**
void kk();
**c.cpp**
#include <iostream>
using namespace std;
void kk()
{
cout<<"111"<<endl;
}
**b.h**
#include "c.h"
void pp();
**b.cpp**
#include "b.h"
void pp()
{
kk();
}
**a.cpp**
#include "b.h"
int main()
{
pp();
}
这是我的编译过程:将c && b分别做成一个共享库,然后建一个 通过link反对他们。
1. g++ -fpic -shared c.cpp -o libc.so
2. g++ -fpic -shared b.cpp -o libb.so
3. g++ a.cpp -o a -lb -lc -L.
此外,我尝试了很多方法来解决这个问题。 None 成功了。而且我发现在最后一步,如果我没有link library c,输出的是same.It 好像我最后没能link c,但是我就是做了,谁知道原因。 g++ 版本??
您的 libc.so
与 glibc
安装的冲突。您需要更改为使用其他名称