2012-07-26 1 views
2

BusyBox 환경에서 실행되는 매우 간단한 ncurses 프로그램을 작성했습니다. 그러나 모든 프로그램을 컴파일 할 수없는 것 같습니다. 나는 다음을 사용했다 :NCurses를 정적으로 연결하면 BusyBox 환경에서 오류가 발생합니다.

g++ menu.cpp -ohello -lncurses --> Works fine 
g++ -static menu.cpp -ohello -lncurses --> Undefined reference to SP (many times) 

나는 this question을 찾았지만 ncurses 로의 링크는 무시한다. 나는 하나의 실행 파일이 필요하다. 내 타겟 환경이 고정되어 있으므로 이식성에 관심이 없습니다.

답변

1
  1. 정확한 컴파일러 호출과 정확한 오류 메시지를 붙여 넣어야합니다.

  2. ncurses 라이브러리의 정적 버전이 있습니까?

  3. 더 중요한 것은 대상 환경에 맞게 ncurses 라이브러리의 정적 버전을 컴파일 했습니까? 예를 들어 대상 환경이 glibc 대신 ulibc을 사용하고 있거나 완전히 다른 플랫폼 일 수도 있습니다 (힌트 : 대상 플랫폼이 무엇인지 알려주십시오).

  4. 올바른 플래그로 컴파일하는 것이 확실합니까? 표시되는 컴파일러 플래그는 빌드 호스트 환경에서 사용하기 위해 응용 프로그램을 컴파일하는 데 더 적합합니다. ...

+0

1. ncurses 라이브러리를 찾을 수 없습니다. 수백 줄의 : SP에 대한 정의되지 않은 참조. 2. 아니요 3. 대상 환경은 x86 pc 입니다. 4. 아니요. 확실하지 않습니다. 그래서 여기에서 묻습니다. 외부 의존성없이 하나의 실행 파일을 만드는 법; 파일에 포함 된 모든 것 – Mustafa