많은 C 프로그래머들이 다음과 같은 질문을 갖고 있다고 생각합니다. 서버에 서로 다른 gcc 버전이 있으면 어떻게 되나요?
대답은 '예'입니다. 일반적으로 gcc를 사용하여 소스 파일을 컴파일할 때 이 gcc는 시스템 환경 변수 PATH에서 발견되는 첫 번째 gcc입니다.
다른 시스템용으로 프로그램을 크로스 컴파일하고 싶다면 어떻게 해야 합니까? 이를 위해서는 여러 세트의 컴파일 도구 체인이 필요하며 해당 도구 체인은 대상 시스템의 프로그램을 컴파일하는 데 사용됩니다.
/usr/bin
디렉터리에 위치합니다. /usr/include
中,标准库的头文件一般在 /usr/local/include
. /usr/lib
和 /lib
,静态库通常也会放在这里或者 /usr/local/lib
에 있습니다. 컴파일러 경로에 대한 환경 변수를 변경할 필요는 없습니다. /usr/bin
应该已经在你的 PATH
环境变量中了。如果你需要使用不同的编译器,你可以直接使用其完整路径或者修改 PATH
가 이미
환경 변수를 수정하여 컴파일러를 가리키도록 할 수 있습니다. 예: PATH
으아악
Marvell에서 제공하는 툴 체인을 사용하여 Ubuntu에서 ARM 아키텍처 프로그램을 컴파일해야 합니다. 이 툴체인에는 ARM 아키텍처 프로그램 크로스 컴파일을 위한 gcc 및 기타 도구가 포함되어 있으며 모두 동일한 접두사가 있습니다. 으아악
실행 가능한 프로그램 시스템 아키텍처 보기
그런 다음 다음 두 프로그램을 각각 실행합니다.
현재 시스템 아키텍처: uname -m
gcc是会按照系统默认的PATH路径去查找编译时需要的相应的工具组件
. 如果都把这些工具链的路径加到系统的环境变量PATH中则会产生冲突
이전 경로에서 동일한 이름을 가진 도구가 먼저 사용됩니다. 예를 들어 PATH는 다음과 같이 설정됩니다.
으아악
那么前面的就会覆盖后面的
,每次执行都会优先使用最早匹配到的gcc工具
/path/arm_toolchain/bin 및 /usr/bin, /path/x86_toolchain/bin에는 모두 gcc라는 도구가 있습니다.
단점: 다양한 아키텍처의 컴파일 도구 체인은 동적으로 지정할 수 없으며 PATH 환경 변수를 자주 수정해야 합니다.
给每个工具链指定相应的环境变量
개선 방법:
이 방법은 일시적으로 도구 체인을 전환하고 다른 아키텍처의 프로그램을 컴파일하는 데 적합합니다. 대규모 C 프로그램인 경우 일반적으로 컴파일러 경로가 구성 파일에 지정된 다음 make, meson 또는 기타 빌드 도구를 사용하여 빌드됩니다. 🎜
위 내용은 우분투 서버에서 다른 시스템의 실행 프로그램을 크로스 컴파일하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!