문제

나는 OS가없는 맞춤형 PowerPC 플랫폼을 위해 Newlib를 컴파일하고 있습니다. 인터넷에 대한 정보를 읽는다는 점은 <newplatform> libgloss의 하위 디렉토리.

내가 Newlib를 컴파일 할 때 이것이 어떻게 픽업 될 것인지에 대한 혼란입니다. 그것은 마지막 부분입니까? --target 예를 들어 구성하려는 인수 powerpc-ibm-<newplatform> ?

이것이 사실이라면, 나는 똑같이 사용해야한다고 생각합니다 --target Binutils 및 GCC를 컴파일 할 때?

고맙습니다

도움이 되었습니까?

해결책

나도 Newlib와 GCC를 직접 포팅했습니다. 그리고 나는 Newlib를 만들기 위해 많은 일을 할 필요가 없다는 것을 기억합니다 (GCC, Gas 및 LibBFD 포팅은 대부분의 일이었습니다).

플로팅 포인트 번호에 대한 일부 파일을 조정하고, 더 정교한 기능을 사용하지 않는 일부 posix/someotherstandard 플래그를 끄고, 지원 코드를 작성해야했습니다. longjmp / setjmp 해당로드 및 저장 레지스터 상태를 점프 버퍼에 넣습니다. 그러나 당신은 확실히 그것을 사용하여 목표를 말해야합니다. --target 따라서 올바른 기계 하위 디렉토리와 그 내용을 사용합니다. 나는 작은 코드를 추가해야한다는 것을 기억합니다 configure.sub 내 목표에 대해 알고 완전한 구성 트라이브 (CPU 제조업체 -OS 또는 이와 유사한)를 인쇄합니다. 방금 전화 한 파일을 편집해야한다는 것을 알았습니다 configure.host 또한 대상에 대한 몇 가지 옵션을 설정합니다 (예 : 운영 시스템이 신호가 상승하는지 여부 raise, 또는 Newlib 자체가 취급을 시뮬레이션 해야하는지).

나는 사용했다 이 블로그 안토니 그린 (Anthony Green)은 가이드 라인으로 GCC, Newlib 및 Binutils의 포팅을 설명합니다. 나는 당신이 직접해야 할 때 훌륭한 소스라고 생각합니다. 어쨌든 재미있게 읽습니다. 독립형 C 만 필요한 재미있는 C 프로그램을 컴파일하고 실행하는 데 총 2 개월이 걸렸습니다 (시뮬레이터 터미널에 쓴 더미 읽기/쓰기 기능 포함).

그래서 저는 작업량이 확실히 관리 가능하다고 생각합니다. 나를 거의 미치게 만든 사람은 libgloss빌드 스크립트. 나는 확실히 그 Autoconf Magics에서 길을 잃었습니다. :) 어쨌든, 나는 당신에게 행운을 빕니다! :)

다른 팁

체크 아웃 Newlib 포팅.

인용하다:

나는 Newlib가 자신의 OS에 포팅하기 위해 엄청나게 어려운 주 후에 Newlib 포팅 요구 사항과 실제로 수행하는 방법을 설명하는 튜토리얼을 작성하기로 결정했습니다. 나는 당신이 이미 어딘가에서 바이너리를로드 할 수 있으며이 바이너리는 C 코드로 편집되어 있다고 가정합니다. 또한 SyScall 인터페이스 설정이 이미 있다고 가정합니다. 왜 기다려? 금이 가자!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top