Я пытаюсь статически связать glibc для запуска моего приложения на более старой ОС, но когда я использую флаг -static, я получаю ошибки «неопределенная ссылка» для других библиотек, которые я использую, но не получаю без использования -static. Как мне исправить эту проблему?
Мой Makefile производит следующие команды:
g++ -static -Wall -O3 -w -std=c++11 -I/storage/home/PA/libs -I/storage/home/PA/libs/xerces -fopenmp -c Utilities.cpp
gcc -static -Wall -O3 -w -std=c++11 -I/storage/home/PA/libs -I/storage/home/PA/libs/xerces -fopenmp -c ccvt.c
gcc -static -Wall -O3 -w -std=c++11 -I/storage/home/PA/libs -I/storage/home/PA/libs/xerces -fopenmp -c client.c
g++ -static -Wall -O3 -w -std=c++11 -I/storage/home/PA/libs -I/storage/home/PA/libs/xerces -fopenmp -c XML_Params.cpp
g++ -static -Wall -O3 -w -std=c++11 -I/storage/home/PA/libs -I/storage/home/PA/libs/xerces -fopenmp -c main.cpp
g++ -static -Wall -O3 -std=c++11 -L/storage/home/PA/libs/gsl -fopenmp -lgsl -lgslcblas -lm -L/storage/home/PA/libs/xerces -lxerces-c -o App main.o Utilities.o XML_Params.o ccvt.o client.o
После последней строки я получаю огромную стену ошибок с жалобами на неопределенные ссылки на функции Xerces и gsl. Однако, если я удалю -static из make-файла, все будет нормально. Как правильно связать эти библиотеки, когда я использую -static?