Я пытаюсь выполнить кросс-компиляцию в AIX с помощью компиляторов xlc / xlC.
Код успешно компилируется, когда он использует настройки по умолчанию на другом компьютере. Код фактически успешно компилируется с помощью кросс-компиляции, но проблема возникает из-за компоновщика. Это команда, которая связывает объекты вместе:
$(CHILD_OS)/usr/vacpp/bin/xlC -q32 -qnolib -brtl -o $(EXECUTABLE) $(OBJECT_FILES)
-L$(CHILD_OS)/usr/lib
-L$(CHILD_OS)/usr/vacpp/lib/profiled
-L$(CHILD_OS)/usr/vacpp/lib
-L$(CHILD_OS)/usr/vac/lib
-L$(CHILD_OS)/usr/lib
-lc -lC -lnsl -lpthread
-F$(CHILD_OS)$(CUSTOM_CONFIG_FILE_LOCATION)
Когда я пытаюсь связать код, я получаю несколько неопределенных символов:
.setsockopt (int, int, int, const void *, long без знака), .socket (int, int, int), .connect (int, const sockaddr *, long без знака) и т. д.
Я обнаружил, что отсутствующие символы взяты из стандартной библиотеки c, libc.a. Когда я посмотрел на символы с nm для файла libc.a, который подбирается, символы действительно существуют. Я предполагаю, что может быть проблема с тем, что C ++ не может читать объекты C, но я действительно стреляю в темноте.