我正在使用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编译此代码,则代码运行成功。我需要用所有的lib编译这个代码,所以我可以使用这些库的函数。
我在这里发现了同样的问题:Why does including -fPIC to compile a static library cause a segmentation fault at run time?
但这并不能解决我的问题。
答案 0 :(得分:0)
-shared
生成一个可以与其他对象链接的共享对象。它不会创建可执行文件。您不能只执行共享对象。要么与其他内容链接以生成可执行文件,要么首先不创建动态库。