gcc에서 원하는 플래그를 사용하여 실제 gcc를 실행하는 래퍼 스크립트를 만들 수 있습니다. 이것은 Makefiles와 환경 변수가 엉망인 복잡한 빌드에서 작동합니다. gcc 스크립트가 실제 gcc 바이너리보다 PATH의 앞부분에 있는지 확인하기 만하면됩니다. 스크립트 자체는 단지 두 줄,
#!/bin/sh
exec /usr/bin/gcc --sysroot=/your/sysroot "[email protected]"
하고 $HOME/bin
이 PATH에 이른 경우, 당신은 $HOME/bin
에 스크립트를 넣을 수 있으며 다른 사용자에게 영향을주지 않습니다. 당신이 명시 적 /usr/bin/
에 gcc
를 찾는 configure
스크립트가있는 경우
, 당신은 /usr/bin/gcc.bin
에 /usr/bin/gcc
의 이름을 변경하고 스크립트 /usr/bin/gcc
의 이름을 지정해야 할 수도 있습니다. 이는 모든 사용자에게 영향을 미칩니다. 당신이 필요하지만, 또한 특정 사용자 또는 사용자에게 영향을하려면,
#!/bin/sh
[ "$(id -un)" -eq "theuser" ] && exec /usr/bin/gcc.bin --sysroot=/your/sysroot "[email protected]"
exec /usr/bin/gcc.bin "[email protected]"
를 사용하는 경우 당신은 할 수있는 변형, 예를 들어, 특정 사용자 계정 또는 그룹 구성원 자격을 사용하여 동일한 구성표를 사용하여 특정 sysroot를 설정합니다.
AXIS2/C를 크로스 컴파일하려고 할 때 유일한 해결책입니다. 몇 가지 신비한 이유로, AXIS2/C의 makefile은 sharedlib를 연결할 때 CFLAGS, LDFLAGS 및 LIBS 환경 변수에 넣은 "- sysroot"옵션을 제거했습니다. 또한 ./configure --disable-shared 옵션을 사용하지 않도록 설정하려고했으나 링커가 최종 연결 단계에서 "중복 된 심볼"버그에 대해 불평 할 것입니다. – RichardLiu
@RichardLiu : AXIS2/C 1.6.0에서'util/autogen.sh'를 실행하면 새로운'--with-sysroot = DIR' 설정 옵션이 증가합니다. 그러나 libtool에만 전달 된 것처럼 보입니다. '--with-cflags-sysroot' configure 옵션 (각'configure.ac'에 약 30 행)을 추가하면 작동하는 것 같습니다. 해당 패치를 사용 하시겠습니까? 전체 프로젝트는 내 dev 머신에서 ('util/src/platforms/unix/uuid_gen_unix.c') 컴파일하려고 시도하는 첫 번째 파일에서 실패하기 때문에 오래된 것 같습니다. –