Проблема с связыванием C ++ с -fPIC? Ошибка сегмента - PullRequest
0 голосов
/ 08 мая 2018

Я компилирую свой код, используя 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 

Я уже включил lib с помощью команды ldconfig. Мне нужно использовать -fPIC, потому что в конечном итоге эта библиотека будет связана с другими статическими библиотеками для формирования динамической библиотеки. Когда я запускаю этот код, используя следующую команду

./a.out

Дает "Ошибка сегмента".

код main.cpp

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

Если я скомпилирую этот код, используя g ++ main.cpp, тогда код будет успешно выполнен. Мне нужно скомпилировать этот код со всей библиотекой lib, чтобы я мог использовать функции этих библиотек.

Здесь я обнаружил такую ​​же проблему: Почему включение -fPIC для компиляции статической библиотеки вызывает ошибку сегментации во время выполнения?

Но это не решает мою проблему.

1 Ответ

0 голосов
/ 08 мая 2018

-shared создает общий объект, который может быть связан с другими объектами. Он не создает исполняемый файл. Вы не можете просто выполнить общий объект. Либо связывайтесь с чем-то другим для создания исполняемого файла, либо вообще не создавайте динамическую библиотеку.

...