나는 대학 컴퓨터에 SSH 계정을 가지고 있고 내 C++11 코드와 호환되지 않는 gcc 4.4.7로만 컴파일할 수 있습니다(소프트웨어를 설치/업데이트할 권한이 없습니다). 내 컴퓨터에 Debian이 있지만 Debian에서 컴파일한 프로그램이 Solaris와 호환되지 않습니다.
Solaris에서 작동하도록 데비안에서 소스 코드를 컴파일할 수 있습니까? 아니면 내 문제에 대한 해결책이 있습니까?
답변1
Debian 컴퓨터에 VirtualBox(또는 다른 가상 컴퓨터 소프트웨어)를 설치하고 실행할 수 있습니다.저것. Oracle(공급업체)에서 제공다운로드.
대학 컴퓨터가 호환되는 경우(x86 기반, 유사) 로컬에서 실행 파일을 컴파일하여 다른 컴퓨터에서 사용할 수 있습니다.
답변2
Thomas Dickey가 게시한 것처럼 무엇을 원하시나요?는크로스 컴파일러.
그들은 그렇지 않다딱딱한하지만 이를 설정하고 올바르게 설정한 상태로 유지하는 것은 매우 지루한 일입니다.많은올바른 실행 파일을 빌드하려면 대상 시스템에 대한 종속성을 고려해야 합니다.
이러한 종속성에는 어떤 것이 있습니까? 내 머리 꼭대기에서 바로 :
- 첫째, 대상 시스템은 다음과 같을 수 있습니다.ㅏ호스팅 환경따라서 크로스 컴파일러는 대상 시스템이 실제로
main()
함수가 호출되는 지점에 도달할 수 있도록 실행 가능한 시작 코드/바이너리를 제공해야 합니다. - 많이있다구현 정의"얼마나 오래되었는지"와 같은 대상 시스템에 대한 세부 정보
long
입니다. 이것들은 다를 수 있으므로 더 나은 단어가 부족하기 때문에 그렇게 해야 합니다.구현하다. 일반적으로 이것은 적어도모두대상 시스템의 헤더 파일은 "구현의 일부"입니다. 당신에게 필요한 것과 필요하지 않은 것을 결정하는 것은 기껏해야 지루한 작업입니다. 그러니 모두 잡아라, 그렇지? 글쎄, 이로 인해 걱정해야 할 종속성 수가 늘어납니다. - 이제 컴파일할 수 있지만 그럴 수는 없습니다.협회대상 시스템 라이브러리가 없습니다(위의 #1과 관련이 있지만더필요합니다). 이론적으로는 대상 시스템과 연결할 수 있지만변화 없는라이브러리 및 대상 시스템 없음동적도서관, 아니모두크로스 컴파일러에서 생성된 바이너리를 대상 시스템에서 실행하려고 할 때 "기호 누락" 오류로 인해 실패하지 않을지 실제로 확신할 수 없습니다.
따라서 크로스 컴파일러를 생성하려면 대상 시스템의 헤더, 라이브러리 및 시작 바이너리/코드가 필요합니다. 일단 이것이 설정되면 다음을 수행해야 합니다.유지하다It - 대상 시스템이 크로스 컴파일러에 영향을 미치는 방식으로 패치된 경우 이러한 변경 사항을 컴파일러에 복제해야 합니다. 패치 "123456" 또는 RPM "abc"가 크로스 컴파일러에 영향을 미치는지 어떻게 확인합니까?
제가 많이 놓쳤을 수도 있어요.
타겟 시스템이 이와 같기 때문에 아무도 크로스 컴파일러를 사용하지 않는 이유는 분명합니다.단순한x86 하드웨어에서 Linux/Solaris/Windows/BSD 등의 인스턴스를 생성하고 대상 시스템이 어려운 경우(예: SPARC의 Solaris) 해당 대상에 대해 컴파일해야 하는 거의 모든 사람이 저가형 호환 하드웨어를 구입하는 이유는 무엇입니까? 컴파일에 사용됩니다.