У меня есть структура файла C ++ .so, как это: (динамическая библиотека)
Folder 1 (.d and .o extention files)
Folder 2 (.d and .o extention files)
Folder 3 (.d and .o extention files)
processsignal.so
makefile
objects
sources...
Ребята, вы знаете, как скомпилировать и запустить файлы выше, я пытался скомпилировать .so, а также запустил makefile, однако это остается ошибкой:
make:
make: Nothing to be done for `Cartographie/ProcessingFit.d'.
Компиляция G ++:
g++ libsignalProcessing.so
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
Если вы хотите использовать .so файл в вашей программе, вам нужно использовать -l
флаг компилятора gcc. Прежде чем сделать это, вам нужно установить LD_LIBRARY_PATH
к месту расположения .so
Например, если у вас есть libsomelib.so в каталоге / home / code, тогда установите LD_LIBRARY_PATH как LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/code
а потом export LD_LIBRARY_PATH
,
Проверьте это с echo $LD_LIBRARY_PATH
, Это должно дать местоположение библиотеки.
Затем в программе, где вы хотите использовать этот.
g++ -L ../code abc.cpp -lsomelib
Я не уверен насчет вашего производственного кода здесь, но в целом, если ваша программа используется в качестве библиотеки, то она может не иметь точки входа, которая является main
функция.
Других решений пока нет …