Skip navigation.
 
mlRe: Compiling on Leopard, running on Tiger
FROM : Christiaan Hofman
DATE : Fri Jul 25 23:46:03 2008

On 25 Jul 2008, at 10:40 PM, Gerben Wierda wrote:

> On Jul 25, 2008, at 6:00 PM, Christiaan Hofman wrote:
>

>> One way you could go about is to separate the code using the X 
>> libraries into a separate framework which you build with the 10.4u 
>> SDK.
>>
>> Otherwise, I believe you can link against a different version from 
>> the X libraries. Perhaps the one from the 10.4 SDK or a copy 
>> patched using install_name_tool. But I've never done that myself.

>
> What I am trying to do is compile Ghostscript under Leopard such 
> that it can be used under Tiger.
>
> Compiling object files goes like this:
>

>> rm -f ./obj/gscdefs.c
>> cp ./src/gscdef.c ./obj/gscdefs.c
>> cc -mmacosx-version-min=10.4  -DHAVE_MKSTEMP -DHAVE_HYPOT  -
>> DHAVE_FONTCONFIG -O2 -Wall -Wstrict-prototypes -Wundef -Wmissing-
>> declarations -Wmissing-prototypes -Wwrite-strings -Wno-strict-
>> aliasing -fno-builtin -fno-common -DHAVE_STDINT_H -
>> DGX_COLOR_INDEX_TYPE="unsigned long long"  -I./obj -I./src  -o ./
>> obj/gscdefs.o -c ./obj/gscdefs.c

>
>
> This looks all fine. Then the gs makefile runs a large link command 
> that looks like this:
>

>> cc -mmacosx-version-min=10.4 -L/usr/X11/lib -o ./bin/gs ./obj/
>> gsromfs1.o ./obj/gs.o ./obj/gp_getnv.o \
>> ./obj/gp_unix.o \
>> ./obj/gp_unifs.o \
>> ./obj/gp_unifn.o \
>> ./obj/gp_stdia.o \
>> ./obj/gp_unix_cache.o \

>
> [a lot of same stuff removed]
>

>> ./obj/siinterp.o \
>> ./obj/siscale.o \
>> ./obj/sidscale.o \
>> ./obj/gsnorop.o \
>> ./obj/gp_strdl.o \
>> -L/usr/X11/lib \
>> -lXt \
>> -lSM \
>> -lICE \
>> -lXext \
>> -lX11 \
>> -lcupsimage \
>> -lcups \
>> -lz \
>> -lpthread \
>> -ldl -lm -liconv -lstdc++ -L/usr/local/lib -lfontconfig -lm

>
> Now, this starts with -mmacosx-version-min=10.4 but still the result 
> is:
>

>> /usr/local/bin/gs --version
>> dyld: Library not loaded: /usr/lib/libiconv.2.dylib
>> Referenced from: /usr/local/bin/gs
>> Reason: Incompatible library version: gs requires version 7.0.0 or 
>> later, but libiconv.2.dylib provides version 5.0.0
>> Trace/BPT trap

>
> Obviously, the -mmacosx-version-min is not enough to let the linker 
> use /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libiconv.2.dylib instead 
> of /usr/lib/libiconv.2.dylib. Anything else I can try?
>
> G


-mmacosx-version-min gives the deployment target, not the SDK version 
(that's more like macosx-version-max). So it's still linking to the 
library from the 10.5 SDK, which has 7.0.0 set as compatibility 
version of libiconv. So you must tell the linker not to use the 
version of libiconv in the standard location. I think you can use the -
dylib_file option for that. Though I haven't been able to do that 
myself (though I did not try very hard).

Otherwise, why can't you just use the 10.4u SDK? Are you using any 
10.5 API?

Christiaan

Related mailsAuthorDate
mlCompiling on Leopard, running on Tiger Gerben Wierda Jul 25, 16:26
mlRe: Compiling on Leopard, running on Tiger Christiaan Hofman Jul 25, 18:00
mlRe: Compiling on Leopard, running on Tiger Gerben Wierda Jul 25, 22:40
mlRe: Compiling on Leopard, running on Tiger Christiaan Hofman Jul 25, 23:46
mlRe: Compiling on Leopard, running on Tiger Gerben Wierda Jul 26, 00:10
mlRe: Compiling on Leopard, running on Tiger Christiaan Hofman Jul 26, 00:21