Hi,

I am compiling GNUstep on OpenBSD using a more modern GCC version than the system one. If other systems do not change library versions though this problem is more general.

I have compiled with CC=egcc , nothing more.

At when I run a program, I get:

$ plparse
plparse:/System/Library/Libraries/libgnustep-base.so.1.24: /usr/lib/libobjc.so.6.0 : WARNING: symbol(__objc_class_name_Protocol) size mismatch, relink your program plparse:/System/Library/Libraries/libgnustep-base.so.1.24: /usr/lib/libobjc.so.6.0 : WARNING: symbol(__objc_class_name_Object) size mismatch, relink your program plparse:/System/Library/Libraries/libgnustep-base.so.1.24: undefined symbol '__objc_msg_forward2'
Segmentation fault (core dumped)



I think the main problem is that gcc 4.9 should have bumped the revision of the libobjc library, since it is no longer compatible.
$ ldd /System/Tools/plparse
/System/Tools/plparse:
Start End Type Open Ref GrpRef Name
000019de13a00000 000019de13e04000 exe 1 0 0 /System/Tools/plparse 000019e0929c4000 000019e0933bd000 rlib 0 1 0 /System/Library/Libraries/libgnustep-base.so.1.24 000019e0a3673000 000019e0a3a95000 rlib 0 2 0 /usr/lib/libobjc.so.6.0
<...>

At runtime ldd resolves to /usr/lib which is the system compiler which is older (4.2, IIRC) while the correct libobjc.so.6.0 is in /usr/local/lib

Can this be solved/worked around? The path to libobjc should be embedded, perhaps -R as a linker flag or some other trick?

Riccardo

_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to