작은 JNI 라이브러리가 필요한 USB 하드웨어 인터페이스 보드와 통신하기위한 프로그램을 작성 중입니다. 내가 컴파일 시스템에 10.5.8를 실행하고, 그리고 성공적으로 다음 명령을 JNI를 위해 공유 라이브러리를 컴파일 할 수MacOS에서 PPC G3에 대한 크로스 컴파일 10.3.9
# Build shared library for K8055
g++ -x objective-c -fmessage-length=0 -pipe -Wno-trigraphs \
-fpascal-strings -fasm-blocks -O0 -mdynamic-no-pic -fvisibility=hidden -gdwarf-2 \
-Wmost -Wno-four-char-constants -Wno-unknown-pragmas \
-c ./K8055/K8055.m \
-o ./K8055/K8055.o \
-arch x86_64 \
-arch i386
echo "Building JNI shared library..."
gcc -c -m64 -I/System/Library/Frameworks/JavaVM.framework/Headers \
k8055usbio.m -o k8055usbio.so -arch x86_64
echo "Compiling dynamic library with both..."
g++ -m64 -dynamiclib -o ./lib/libk8055usbio.dylib \
k8055usbio.so ./K8055/K8055.o\
-framework Foundation -framework IOKit
난 정말 내가 여기서 뭘하는지 이해하지 않는다; 나는 많은 인터넷 검색에서 그걸 함께 모을 수 있었다. 내 질문은 : 어떻게 10.3.9를 실행하는 PPC G3 컴퓨터에 대해 컴파일하려면이 수정해야합니까? 내가 좋아하는 자바 부분. 여기에 지금까지 시도한 것입니다 :
dyld: java bad CPU subtype in library: /libk8055usbio.dylib
Trace/BPT trap
I :
# Build shared library for K8055 (PPC)
echo "Building driver shared library..."
g++ -x objective-c -fmessage-length=0 -pipe -Wno-trigraphs \
-fpascal-strings -fasm-blocks -O0 -mdynamic-no-pic -fvisibility=hidden -gdwarf-2 \
-Wmost -Wno-four-char-constants -Wno-unknown-pragmas \
-c ./K8055/K8055.m \
-o ./K8055/K8055.o \
-arch ppc
echo "Building JNI shared library..."
gcc -c -I/System/Library/Frameworks/JavaVM.framework/Headers \
k8055usbio.m -o k8055usbio.so -arch ppc
echo "Compiling dynamic library with both..."
gcc -shared -fPIC -o ./lib/libk8055usbio.dylib k8055usbio.so \
./K8055/K8055.o -framework Foundation -framework IOKit -arch ppc
을하지만 System.load()가, 내가 자바 (1.5) 프로그램에서 다음과 같은 오류가 발생하려고 할 때 그것을 고치는 방법을 모르는 어떤 CPU 하위 유형을 지정해야합니까?
'-arch ppc'과 10.4u SDK와 함께'-arch i386'을 추가하면, OS X 10.3.9를 실행하는 모든 Mac에서 작동 할 수있는 유니버설 바이너리로 끝납니다. 현재 10.6. –
또한'otool -hv' (또는'-hV')를 사용하여 대부분의 필드를 디코드 할 수 있습니다. –
허, 분명히 -v에 대해 잊어 버렸습니다. 감사! –