как связать библиотеку (lib.a) с файлом cpp при компиляции? - PullRequest
0 голосов
/ 02 мая 2018

Вопрос, который у меня был ранее ( ссылка ), должен быть запрошен с правильным заголовком. Здесь я задаю мою проблему в этом посте.

Как указано в ссылке выше, после

./configure > make > make install > aclocal > make

библиотечные файлы, включая libsoft.a и libsoft.so, были созданы в "softsusy-4.1.1 / .libs".

Также в папке "softsusy-4.1.1 / src / .libs" уже созданы все необходимые файлы .o, чьи файлы .cpp включены / указаны в main.cpp.

В попытке скомпилировать main.cpp я попытался

g++ -g main.cpp nmssmsoftsusy.cpp decays.cpp /path/config.h -o main
g++ -g -Wall -L/path/softsusy-4.1.1/src/.libs -llibsoft main.cpp -o test
g++ -g -Wall -llibsoft main.cpp -o main

где main.cpp

#include "main.h"
#include "nmssmsoftsusy.h"
#include "decays.h"

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

using namespace softsusy;

int main() {
  /// Sets up exception handling
  signal(SIGFPE, FPE_ExceptionHandler); 

Тогда я получил такие ошибки, как

неопределенная ссылка на `FPE_ExceptionHandler (int) '

для первого и второго испытаний, и ошибка, о которой он не знает libsoft для последнего испытания:

/ usr / bin / ld: не удается найти -llibsoft

Есть несколько ошибок такого рода, даже после того, как я изменил .h на файлы .cpp или включил softsusy.h.

Могу ли я спросить вас, как правильно связать файлы .o (чьи файлы .cpp включены в main ()) или каким-либо другим способом запустить main.cpp?

Спасибо.

...