首页 > 解决方案 > -fPIC 的 C++ 链接问题?段故障

问题描述

我正在使用 g++ 编译我的代码

g++ -g  -O3 -fPIC -shared -lstdc++ -std=c++0x  -I/home/nikesh.joshi/somepath/ main.cpp   /home/nikesh.joshi/ml/somepath_apis/somepath/somefile.o 

我已经使用 ldconfig 命令包含了 lib。我需要使用 -fPIC 因为最终这个库将与其他静态库链接以形成一个动态库。当我使用以下命令运行此代码时

./a.out

它给出“段错误”。

main.cpp 代码

#include<iostream>
using namespace std;
int main(){
        cout<<"Hello";
}

如果我使用 g++ main.cpp 编译此代码,则代码运行成功。我需要用所有库编译这段代码,所以我可以使用这些库的功能。

我在这里发现了同样的问题:为什么包含 -fPIC 来编译静态库会导致运行时出现分段错误?

但这并不能解决我的问题。

标签: c++linkerruntime-errorlinker-errors

解决方案


-shared生成可以与其他对象链接的共享对象。它不会创建可执行文件。您不能只执行共享对象。要么与其他东西链接以生成可执行文件,要么首先不创建动态库。


推荐阅读