크로스 컴파일에 지쳤고 이미 gcc
Synology DiskStation DS214에서 DSM 6.1을 사용하여 작업(크로스 컴파일)하고 있으므로 처음에는 비어 있던 DiskStation에서 실행되는 Linux 버전용 Linux 헤더를 설치하려고 했습니다 /usr/include
. 하나 있다개발자를 위한 Synology의 테이크킷하지만 /usr/include
create a의 linux/version.h
헤더는 LINUX_VERSION_CODE=132636
주어진 3.2.40보다 훨씬 낮습니다 uname -a
. 아마도 이는 툴킷의 DSM 6.1 버전과 5.2 버전 간의 불일치 때문일 수 있습니다. DSM을 5.2로 다운그레이드하는 것은 선택 사항이 아니며 불가능할 수도 있습니다.
sudo make headers_install
다음과 같은 이유로 DiskStation의 Linux 3.2.40 소스 실행이 실패합니다.
$ sudo env CFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I/usr/include" \ CPPFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I /usr/include" \ CXXFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16 -I/usr/include"\ LDFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16" \ headers_install \ 만들기 CFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I/usr/include" \ CPPFLAGS="-mfloat-abi=hard -mfpu=vfpv3-d16 -I /usr/include" \ CXXFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16 -I/usr/include"\ LDFLAGS="-mfloat-abi=hard-mfpu=vfpv3-d16" \ INSTALL_HDR_PATH=/usr CHK 포함/linux/version.h HOSTCC 스크립트/기본/fixdep /opt/toolchain/include/features.h:434:0에 포함된 파일에는, /opt/toolchain/include/sys/types.h:25에서, scripts/basic/fixdep.c:106에서: /opt/toolchain/include/gnu/stubs.h:7:29: 치명적인 오류: gnu/stubs-soft.h: 해당 파일이나 디렉터리가 없습니다. # 포함하다 ^ 컴파일이 종료됩니다. make[1]: *** [scripts/basic/fixdep] 오류 1 make: *** [scripts_basic] 오류 2
등 의 기타 빌드 설정이 binutils
선택되어 make
문제 없이 포함되지 않습니다. 최신 버전의 Linux 3.2.x인 3.2.86에서도 동일한 문제가 발생합니다.-mfloat-abi
gnu/stubs-soft.h
아마도 더 쉬운 방법이 있다는 것을 알고 있습니다. 설정은 대부분 크로스 컴파일과 함께 작동해야 하며 제가 하려는 작업에 대한 사용 사례는 없지만 작업이 어떻게 작동하는지, 무엇을 할 수 없는지 이해하고 싶습니다. 나는하려고 노력하고있다.