discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Linking frameworks does not work


From: Andreas Höschler
Subject: Re: Linking frameworks does not work
Date: Wed, 2 May 2018 15:30:21 +0200

Hi Wolfgang,

I have Window Maker running now and Fred resize.app but still wasn't able to get one of my own apps to work that need to be linked against my frameworks. The test app links against gui and base but not any of the listed frameworks SRFoundation, SREnterprise,...

That very much sounds like the code of your test app does not use any code from these frameworks.
Keep in mind that libraries linked with -l options are used only to resolve unresolved symbols in the code. If a library does not provide any such symbols it is ignored and will not be included in the final executable.

That's not the case. The code is used. When executing the resulting binary I get tons of "... does not recognize selector ..." exceptions!? :-(

For test purposes I tried

make messages=yes shared=no

This seems to add -static to the gcc statement and immediately produces errors in the link phase.

gcc -static -rdynamic      -pthread  -fgnu-runtime -o /Build/TabTest/TabTest.app/./TabTest \
/Build/TabTest/obj/TabTest.obj/Controller.m.o /Build/TabTest/obj/TabTest.obj/DocumentController.m.o /Build/TabTest/obj/TabTest.obj/main.m.o   -lESMFoundation -lSRAppKit -lSRDesign -lSREnterprise -lSRFoundation -lSRInterface -lSRMapKit -lSRObjects -lSRQuery    -L/root/GNUstep/Library/Libraries -L/usr/local/lib   -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -L/usr/lib/i386-linux-gnu  -lESMFoundation -lSRAppKit -lSRDesign -lSREnterprise -lSRFoundation -lSRInterface -lSRMapKit -lSRObjects -lSRQuery  -lgnustep-gui    -lgnustep-base    -lobjc   -lgmp   -lgnutls -lxslt -lxml2 -lffi -lrt -ldl  -lpthread -lz -licui18n -licuuc -licudata  -lm
/usr/bin/ld: cannot find -lESMFoundation
/usr/bin/ld: cannot find -lSRAppKit
/usr/bin/ld: cannot find -lSRDesign
/usr/bin/ld: cannot find -lSREnterprise
/usr/bin/ld: cannot find -lSRFoundation
/usr/bin/ld: cannot find -lSRInterface
/usr/bin/ld: cannot find -lSRMapKit
/usr/bin/ld: cannot find -lSRObjects
/usr/bin/ld: cannot find -lSRQuery
/usr/bin/ld: cannot find -lESMFoundation
/usr/bin/ld: cannot find -lSRAppKit
/usr/bin/ld: cannot find -lSRDesign
/usr/bin/ld: cannot find -lSREnterprise
/usr/bin/ld: cannot find -lSRFoundation
/usr/bin/ld: cannot find -lSRInterface
/usr/bin/ld: cannot find -lSRMapKit
/usr/bin/ld: cannot find -lSRObjects
/usr/bin/ld: cannot find -lSRQuery
/usr/bin/ld: cannot find -lgnustep-gui
/usr/bin/ld: cannot find -lgnustep-base
collect2: error: ld returned 1 exit status

ld does not find my libs!?? The frameworks are all built sucessfully with GNUstep make. If I remember correctly in earlier versions of GNustep make there weren't only the files

/usr/local/include/ESMFoundation
/usr/local/lib/GNUstep/Frameworks/ESMFoundation.framework/Versions/1/ESMFoundation
/usr/local/lib/GNUstep/Frameworks/ESMFoundation.framework/ESMFoundation

for a framework ESMFoundation but also a copy or link of ESMFoundation in a GNUstep Libraries directory. This is no longer the case and might be related to the problem!?

I did

   ln -s /usr/local/lib/GNUstep/Frameworks/ESMFoundation.framework/ESMFoundation /usr/local/lib/GNUstep/Libraries

   ls -l /usr/local/lib/GNUstep/Libraries

lrwxrwxrwx 1 root root   71 Mai  2 14:30 ESMFoundation -> /usr/local/lib/GNUstep/Frameworks/ESMFoundation.framework/ESMFoundation
drwxr-xr-x 3 root root 4096 Mai  2 11:56 gnustep-base
drwxr-xr-x 3 root root 4096 Mai  2 11:57 gnustep-gui

but this had no healing effect.

make messages=yes shared=no

still gives me

This is gnustep-make 2.7.0. Type 'make print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
Making all for app TabTest...
gcc -static -rdynamic      -pthread  -fgnu-runtime -o /Build/TabTest/TabTest.app/./TabTest \
/Build/TabTest/obj/TabTest.obj/Controller.m.o /Build/TabTest/obj/TabTest.obj/DocumentController.m.o /Build/TabTest/obj/TabTest.obj/main.m.o   -lESMFoundation -lSRAppKit -lSRDesign -lSREnterprise -lSRFoundation -lSRInterface -lSRMapKit -lSRObjects -lSRQuery    -L/root/GNUstep/Library/Libraries -L/usr/local/lib   -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -L/usr/lib/i386-linux-gnu  -lESMFoundation -lSRAppKit -lSRDesign -lSREnterprise -lSRFoundation -lSRInterface -lSRMapKit -lSRObjects -lSRQuery  -lgnustep-gui    -lgnustep-base    -lobjc   -lgmp   -lgnutls -lxslt -lxml2 -lffi -lrt -ldl  -lpthread -lz -licui18n -licuuc -licudata  -lm
/usr/bin/ld: cannot find -lESMFoundation
/usr/bin/ld: cannot find -lSRAppKit
/usr/bin/ld: cannot find -lSRDesign
/usr/bin/ld: cannot find -lSREnterprise
/usr/bin/ld: cannot find -lSRFoundation
/usr/bin/ld: cannot find -lSRInterface
/usr/bin/ld: cannot find -lSRMapKit
/usr/bin/ld: cannot find -lSRObjects
/usr/bin/ld: cannot find -lSRQuery
/usr/bin/ld: cannot find -lESMFoundation
/usr/bin/ld: cannot find -lSRAppKit
/usr/bin/ld: cannot find -lSRDesign
/usr/bin/ld: cannot find -lSREnterprise
/usr/bin/ld: cannot find -lSRFoundation
/usr/bin/ld: cannot find -lSRInterface
/usr/bin/ld: cannot find -lSRMapKit
/usr/bin/ld: cannot find -lSRObjects
/usr/bin/ld: cannot find -lSRQuery
/usr/bin/ld: cannot find -lgnustep-gui
/usr/bin/ld: cannot find -lgnustep-base
collect2: error: ld returned 1 exit status


Any idea?

Thanks,

 Andreas


reply via email to

[Prev in Thread] Current Thread [Next in Thread]