I'm experiencing the same problem like B.J. Buchalter had.
I used Xcode 3.0 to build kext for Mac OS X 10.4 Intel & PPC. The
Intel Mac 10.4 loads the kext with no problem. But on the PPC Mac
10.4, I get the message
kld(): <path to kext> load command 2 unknown cmd field
The kext build by Xcode 2.4 on Mac OS X 10.4 had no problem on Intel
and PPC both.
Do I have to keep using Xcode 2.4 to build Tiger PPC kernel extension?
========================================
On Jan 8, 2008, at 10:31 PM, B.J. Buchalter wrote:
As a further followup to this, I found the -no_uuid ld flag and added
it to the other linker flags in my Xcode config, but the UUID is still
placed in the binary. What can I do now? TIA.
Ld /Volumes/shared/Users/bj/development/miodriver/build/
MobileIODriverXCode_intel.build/Development-64bit/
MobileIODriver.build/Objects-normal/i386/MobileIODriver normal i386
cd /Volumes/shared/Users/bj/development/miodriver
/Developer/usr/bin/g++-4.0 -o /Volumes/shared/Users/bj/
development/miodriver/build/MobileIODriverXCode_intel.build/
Development-64bit/MobileIODriver.build/Objects-normal/i386/
MobileIODriver -L/Volumes/shared/Users/bj/development/miodriver/
build/Development-64bit -F/Volumes/shared/Users/bj/development/
miodriver/build/Development-64bit -F/Developer/SDKs/MacOSX10.4u.sdk/
System/Library/Frameworks -filelist /Volumes/shared/Users/bj/
development/miodriver/build/MobileIODriverXCode_intel.build/
Development-64bit/MobileIODriver.build/Objects-normal/i386/
MobileIODriver.LinkFileList -llibAudioFloatLib.a -arch i386 -static -
nostdlib -r -lkmodc++ /Volumes/shared/Users/bj/development/miodriver/
build/MobileIODriverXCode_intel.build/Development-64bit/
MobileIODriver.build/Objects-normal/i386/MobileIODriver_info.o - lkmod
-lcc_kext -lcpp_kext -mmacosx-version-min=10.4 -no_uuid - isysroot
/Developer/SDKs/MacOSX10.4u.sdk
On Jan 9, 2008, at 12:58 AM, B.J. Buchalter wrote:
As a follow up to my question, if I kextload -t the kext on the older
systems, I get the following from kextload:
kld(): <path to kext> load command 2 unknown cmd field
so it seems that the problem is that Xcode 3 is building a binary that
is incompatible with the kernel loader on the older systems.
If I use otool -l on the two executables, the most obvious (non-
trivial) difference is that the Xcode 3 built kext has:
Load command 2
cmd LC_UUID
cmdsize 24
uuid 0xd4 0xbe 0x60 0x0f 0xba 0xbf 0x46 0x3b
0x9b 0x5f 0x1c 0xdd 0xd3 0x09 0xfa 0xc3
and the Xcode 2.4.1 built kext does not.
Anyone know how I either remove this UUID or keep it from being built
into the binary in the first place under Xcode 3?
On Jan 8, 2008, at 10:31 PM, B.J. Buchalter wrote:
We have a kext project that we have been building with a split SDK for
the ppc side and the intel side; we used the 10.3.9 SDK for ppc and
the 10.4u SDK for intel; this had been working fine for Xcode 2.4.1
under Panther for deployment on 10.3.9 and 10.4.x. We migrated the
project to Xcode 3 and 10.5 and everything built fine (no compile or
link errors) and the built driver loads fine on 10.5.x but does not
appear to load on 10.3.9 nor 10.4.x
Any suggestions as to what we need to do to configure the Xcode build
process to work properly targeting the older OS versions while still
building from Xcode 3?
I think you want to add -no_uuid to the Other Strip Flags, not the
Other Linker Flags, and make sure that stripping is done.