나는 팔로우했다이 튜토리얼다음 명령을 사용하여 ChromeOS에서 GCC 컴파일러를 활성화하는 방법을 보여줍니다.
sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 2
sudo mount -i -o remount,exec /home/chronos/user/
export C_INCLUDE_PATH=~/Toolchain/usr/include/
export LD_LIBRARY_PATH=~/Toolchain/usr/lib:~/Toolchain/usr/lib/binutils/armv7a-hardfloat-linux-gnueabi/2.25.1/
export PATH=$PATH:~/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/4.9.3/:~/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.25.1/
sudo sed -i 's/\/usr/\/home\/chronos\/user\/Toolchain\/usr/g' ~/Toolchain/usr/lib/libc.so
일단 실행되면 셸 인스턴스가 종료될 때까지 소스 파일을 컴파일할 수 있습니다. 나중에 셸로 돌아가면 소스에서 컴파일하려는 모든 시도가 ./configure
실패합니다.
인스턴스가 종료된 후 내보낸 변수가 손실된 것 같습니다. 이전과 똑같은 명령을 실행해 보았으나, 컴파일 능력이 돌이킬 수 없을 정도로 상실된 것 같습니다.
이 config.log
스트림에서 다음 오류가 발생합니다.
configure:3378: checking whether the C compiler works
configure:3400: gcc conftest.c >&5
/home/chronos/user/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.25.1/ld: cannot find /home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/usr/lib/libc_nonshared.a
collect2: error: ld returned 1 exit status
configure:3404: $? = 1
configure:3442: result: no
그 과정에서 아주 이상한 일들이 일어났습니다...
cannot find /home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/usr/lib/libc_nonshared.a
이 문제를 해결하기 위해 제한된 Linux 지식을 모두 소진한 것 같습니다. 누구든지 무슨 일이 일어나고 있는지에 대한 통찰력을 제공할 수 있습니까?
답변1
문제는 sed
이런 방식으로 재사용할 때 공유 객체 파일에 계속 추가된다는 것입니다 ~/Toolchain/usr/lib/libc.so
. 따라서 처음 실행한 후에는 파일 경로가 손상됩니다.
경로가 손상된 경우 파일로 이동하여 해당 내용을 수동으로 libc.so
다음과 같이 변경하세요.
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf32-littlearm)
GROUP ( /lib/libc.so.6 /home/chronos/user/Toolchain/usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux-armhf.so.3 ) )
문제는 쉘이 닫힐 때 반환 후 컴파일을 계속하려면 이러한 플래그를 다시 실행하는 것이 export
중요하다는 것입니다 .하다길을 잃다. 셸 초기화 시 플래그를 설정하는 보다 영구적인 솔루션을 찾을 때까지 이 작업을 수행해야 합니다 ~/.bashrc
.