Python 크로스 컴파일

Python 크로스 컴파일

저는 Openembedded를 실행하는 ARM926EJ-S와 함께 평가 보드를 사용하고 있으며 여기에 Python을 설치하고 싶습니다.

다음과 같이 linaro 툴체인(releases.linaro.org/comComponents/toolchain/binaries/6.2-2016.11/)을 사용하여 Fedora 25에서 Python 2.7.13을 성공적으로 크로스 컴파일했습니다.

CONFIG_SITE=config.site ./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabihf --disable-ipv6 --enable-unicode=ucs4

컴파일하는 동안 정확해야 하기 때문에 config.site를 만들어야 합니다.

ac_cv_file__dev_ptmx=no/yes
ac_cv_file__dev_ptc=no/yes

나는 이 사람처럼 두 사람 모두에게 "아니요"라고 말합니다: datko.net/2013/05/10/cross-compiling-python-3-3-1-for-beaglebone-arm-angstrom/

그런 다음 다음을 추가하여 테스트합니다.

--host=arm-elf-linux

다른 라이브러리(pjsip)에서는 작동하지만 불행히도 작동하지 않기 때문에 다음 솔루션을 찾았습니다.

--host=arm-unknown-linux-gnueabihf

여기: github.com/jedisct1/libsodium/issues/274

이는 구성 중에 이 작업을 수행하도록 요청하는 오류가 발생했기 때문입니다.

--desable-ipv6

그러면 구성이 순조롭게 진행되었으니 만들어 보세요. 설치하려면 보드에 설치해야 했기 때문에 다음을 수행했습니다.

make install DESTDIR=root@IP_ADRESS

이것은 또한 작동합니다. Python은 root@IP_ADRESS/usr/local/lib/python2.7에 설치됩니다.

하지만 내 보드에서 찾을 수 없고 Python 쉘을 시작할 수 없습니다.

그래서 나는 이것을 시도합니다 :

export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"

여기에 답변한 것처럼: stackoverflow.com/questions/4743233/is-usr-local-lib-searched-for-shared-libraries

이것은 아무것도 변경되지 않습니다. /usr/local/lib가 존재하지 않는다는 것을 알았습니다... 그리고 내 pjsip lib도 설치되지 않았다는 것을 알았습니다...

내 도서관이 어디로 갔는지 아세요? 어떻게 사용하나요?

감사해요!

편집하다:

실제로 다음을 수행했을 때 해결책을 찾았습니다.

make install DESTDIR=root@IP_ADRESS

root@IP_ADRESS에 설치하지는 않지만 "root@IP_ADRESS"라는 폴더를 생성합니다...

그래서 이 폴더에 포함된 모든 파일을 tar.bz2로 scp하여 내 마더보드에 복사하고 내 마더보드의 /usr/에 있는 모든 폴더와 파일을 복사합니다.

하지만 Python을 시작하려고 하면 작동하지 않습니다.

~# python
-sh: /usr/bin/python: cannot execute binary file

구성 섹션에서 --host가 좋은 것이 아니기 때문입니까?

답변1

해결책을 찾았습니다. 제가 사용한 보드는 OMAPL138(ARM926EJ-S + DSP)이 통합된 TMDSLCDK138입니다.

이 보드용 Python 2.7을 크로스 컴파일하고 Arago SDK를 실행하려는 사람들을 위한 방법은 다음과 같습니다! 우분투 16.04를 사용하고 있습니다.

먼저 Arago 툴체인을 설치합니다.

그게 아니야 :http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/index_FDS.html (더 이상 사용되지 않기 때문입니다!)

하지만 그 중 하나 mcsdk_1_01_00_02_setuplinux.bin!

wget http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk/latest1/exports/mcsdk_1_01_00_02_setuplinux.bin
chmod +x mcsdk_1_01_00_02_setuplinux.bin
sudo ./mcsdk_1_01_00_02_setuplinux.bin

에 설치했습니다 /opt/ti/.

그 다음에:

cd /opt/ti/mcsdk_1_01_00_02
chmod +x linux-devkit.sh
sudo ./linux-devkit.sh

어디에 설치할 것인지 묻는 메시지가 표시됩니다./usr/local/arago.2013-05/

지금 그것을 할:

cd /usr/local/arago-2013.05/
. ./environment-setup

일반적으로 쉘은 "변환"되고 명령줄은 다음을 실행합니다.

[linux-devkit]:/usr/local/arago-2013.05/>

좋아요, 여기에서 GOOD Arago 툴체인 설치가 완료되었습니다.

이제 Python을 크로스 컴파일하고 설치합니다.

이 쉘에서 다른 모든 명령을 실행했습니다 linux-devkit.

wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
tar -Jxvf Python-2.7.13.tar.xz
cd Python-2.7.13/

이제 다음과 같은 파일을 만듭니다 config.site(그렇지 않으면 그렇게 하라는 오류가 발생하기 때문입니다).

touch config.site
gedit config.site

이 파일에 다음 두 줄을 추가합니다.

ac_cv_file__dev_ptmx=no
ac_cv_file__dev_ptc=no

이제 ./configure다음을 수행할 수 있습니다.

CONFIG_SITE=config.site ./configure --host=arm-arago-linux --prefix=/home/YOUR_USER/MY_BOARD_python --build=x86_64-linux-gnu --disable-ipv6
make
make install

scp이제 MY_BOARD_python 폴더를 보드에 압축하면 됩니다 .

tar -jcvf MY_BOARD_python.tar.bz2 MY_BOARD_python/
scp MY_BOARD_python.tar.bz2 root@IP_ADRESS:~/

이제 보드에서:

tar -jxvf MY_BOARD_python.tar.bz2
cp -R MY_BOARD_python/* /usr/

이제 Python을 입력하면 다음과 같습니다.

root@omapl138-lcdk:~# python
Python 2.7.13 (default, Feb 23 2017, 16:37:33) 
[GCC 4.5.3 20110311 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> HURAYY!!

도움이 되었기를 바랍니다!

답변2

--host=arm-linux-gnueabihf

여기서 hf는 하드웨어 부동 소수점 지원을 나타냅니다. ARM926EJ-S는 하드웨어 부동 소수점 연산을 지원하지 않습니다. 결과 바이너리는 대상 보드에서 실행될 수 없습니다.

관련 질문 보기: Linux 마더보드가 하드웨어 FPU를 사용하는지 어떻게 알 수 있나요?

관련 정보