ошибка перекрестной компиляции aarch64-linux-gnu-g в arm64

#gcc #centos #g #arm64

#gcc #centos #g #arm64

Вопрос:

Я пытаюсь перекрестно скомпилировать cpp-коды из Centos 7 в arm64, используя aarch64-linux-gnu-g .

Я установил gcc-aarch64-linux-gnu и gcc-c -aarch64-linux-gnu. Когда я скомпилировал, он выдал ошибку «не удалось найти заголовочные файлы c «.

 [root@server app]# aarch64-linux-gnu-g   -fPIC -shared -pthread -I /usr/lib/gcc/aarch64-linux-gnu/4.8.5/include -I /usr/local/ssl/include -I /usr/java/jdk1.8.0_91/include -I  /usr/java/jdk1.8.0_91/include/linux -L /usr/local/ssl/lib -l:libcrypto.so -l:libssl.so *.cpp
In file included from cms_functions.h:4:0,
                 from cms_functions.cpp:2:
ocsp_functions.h:8:24: fatal error: sys/socket.h: No such file or directory
 #include <sys/socket.h>
                        ^
compilation terminated.
In file included from crl_functions.cpp:2:0:
crl_functions.h:8:24: fatal error: sys/socket.h: No such file or directory
 #include <sys/socket.h>
                        ^
compilation terminated.
In file included from crypto_functions.cpp:1:0:
crypto_functions.h:4:20: fatal error: iostream: No such file or directory
 #include <iostream>
 

Есть идеи?

Спасибо

Ответ №1:

По умолчанию пакет gcc-c -aarch64-linux-gnu установит только компилятор.

Вам необходимо установить заголовки glibc для кросс-компилятора aarch64. Вероятно, вам нужно установить glibc-aarch64-linux-gnu-2.24-2.sdl7.2.noarch.rpm glibc-aarch64-linux-gnu-devel-2.24-2.sdl7.2.noarch.rpm и. sys/socket.h присутствует во втором пакете.

Насколько я знаю, нет пакета rpm, доступного напрямую с заголовками libstdc для centos 7. Одним из решений может быть перекрестная компиляция libstd непосредственно из исходного кода.

Комментарии:

1. Я попытался установить glibc-headers-2.17-317.el7.aarch64.rpm, но это не удалось, так как это неправильный тип arch на моей машине разработки x86 под управлением centos. В моей системе уже установлены glibc-headers-2.17-317.el7.x86_64.

2. Я обновил свой ответ. Извините, я не видел, что вы были перекрестны .компиляция

3. Я установил два rpm, и это устранило предыдущие ошибки. Теперь он жалуется, что не может найти заголовочные файлы iostream и cstring. По-прежнему отсутствуют файлы c include / library для aarch64? Спасибо.