
-----------------------------------
rizzix
Sat Feb 26, 2005 11:52 am

Easy Linux Development: GNUStep
-----------------------------------
Oh, finally the project is at a state in which it can be used without much worries on crashes, bugs etc. 

This is great news, cuz GNUStep is programming made so simple, it's easier than Turing (well not entirely, it requires knowledge on Obj-C, Java or Ruby, and the MVC arch). Also, you write "less" code.

Yes it has support for the Ruby programming language through RIGS, and you could guess Java through JIGS. 

Either way to visually see why it is "programming made easy" (and note easy) here's a flash demo right of their site for you: http://gnustep.org/experience/DevelopmentDemonstration.html

Some things to note:
GNUStep is basically the FSF continuing where OpenStep left off (actually GNUStep started anew). Some time ago NeXT went OpenSource and created OpenStep. NeXT was bought off by Apple, and right after Mac OS X was released. So you might have guessed, yes Mac OS development is just as easy as GNUStep (actually easier, and way more versatile and powerful, not to mention loaded with more features). 

But hey, GNUStep as u see, isin't all that bad. Infact its much easier than KDE or Gnome development. The UI may be ugly (although they claim it is theme-able), but the feel is great!

Unfortunately the last time i checked the windows port of it does not support GUI development yet...

So for those linux folks.. enjoy!

EDIT: learn more about it @ http://gnustep.org/

-----------------------------------
wtd
Sat Feb 26, 2005 12:50 pm


-----------------------------------
Cocoa is just an extension of OpenStep.  There wasno starting anew.  :)

Hence why the classes in Apple's API start with NS (NeXTSTEP).

-----------------------------------
rizzix
Sat Feb 26, 2005 2:29 pm


-----------------------------------
oh sorry i wasn't clear :oops: , i was refering to GNUStep. *fixed*

-----------------------------------
rizzix
Sat Feb 26, 2005 11:08 pm


-----------------------------------
hmm apparently the gui base is ported to windows.. unfortunately it does not come with Gorm or ProjectCenter

i tried downloading and compiling those two, but with no success. the compilation fails.. anyone interested in helping me get these two apps successfully ported?

-----------------------------------
rizzix
Sun Feb 27, 2005 2:01 am


-----------------------------------
i get the following error compiling Gorm:./shared_obj/IBInspector.o(.text+0xee):IBInspector.m: undefined reference to `_imp__IBWillCloseDocumentNotification'

ny ideaz?

-----------------------------------
wtd
Sun Feb 27, 2005 2:32 am


-----------------------------------
My guess is that the linker isn't seeing some "willCloseDocumentNotification" method.

-----------------------------------
rizzix
Sun Feb 27, 2005 10:51 am


-----------------------------------
it isin't yes. so i decided to convert them to #define constants (they were NSString variables).. works. i fixed the next error that occurs as well (although this is different) basically all u need to do is create a GNUmakefile.preamble that it is missing. works. 

the 3rd err is similar to the 1st err, but unfortunately i can;t simply #define those variable (NSString again) in this case.. i need (i'm forced to) it moved intto the library, it autogenerates (corrects) them as exported variables for the DLL after changing them to #define constants. hmm. anyhow. i'm having a hard time getting this one to work.

-----------------------------------
rizzix
Sun Feb 27, 2005 11:08 am


-----------------------------------
details on the 3rd err:Linking palette 0Menus ...
./shared_obj/GormMenuEditor.o(.text+0x6c1):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x6f9):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x12f7):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1897):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1c2f):GormMenuEditor.m: undefined reference to `findAllSubmenus'
./shared_obj/GormMenuEditor.o(.text+0x1d84):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1dac):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1df1):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1e01):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1e1d):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1e33):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x1f6a):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x22e1):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x22eb):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x27a2):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x298c):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x2999):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuEditor.o(.text+0x2c21):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x2ead):GormMenuEditor.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/GormMenuEditor.o(.text+0x2eb6):GormMenuEditor.m: undefined reference to `_imp__GormLinkPboardType'
./shared_obj/GormMenuInspectors.o(.data+0x6dc):GormMenuInspectors.m: undefined reference to `__objc_class_name_IBInspector'
./shared_obj/GormNSMenu.o(.text+0x304):GormNSMenu.m: undefined reference to `_imp__IBSelectionChangedNotification'
./shared_obj/GormNSMenu.o(.text+0x573):GormNSMenu.m: undefined reference to `_imp__IBSelectionChangedNotification'
./shared_obj/main.o(.text+0x64d):main.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/main.o(.text+0xa5e):main.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/main.o(.text+0xe42):main.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/main.o(.text+0x11cc):main.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/main.o(.text+0x14fc):main.m: undefined reference to `_imp__IBMenuPboardType'
./shared_obj/main.o(.text+0x1849):main.m: more undefined references to `_imp__IBMenuPboardType' follow
./shared_obj/main.o(.data+0xa0c):main.m: undefined reference to `__objc_class_name_IBPalette'
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: no export definition file provided.
Creating one, but that may not be what you want
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: gcc exited with status 1
make[3]: *** [0Menus.palette/./0Menus.dll] Error 1
make[2]: *** [0Menus.all.palette.variables] Error 2
make[2]: Leaving directory `/home/johnmark/Gorm-0.9.0/Palettes/0Menus'
make[1]: *** [internal-all] Error 2
make[1]: Leaving directory `/home/johnmark/Gorm-0.9.0/Palettes'
make: *** [internal-all] Error 2

note the lines:c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: no export definition file provided.
Creating one, but that may not be what you want
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: gcc exited with status 1  hmm it literally genereates a heck a lot of .h files.

EDIT: it does not generate .h files but coppies and then links them.. so fixing the original source fixed the problem. (same trick as err #1)

-----------------------------------
rizzix
Sun Feb 27, 2005 11:40 am


-----------------------------------
but now there's a  4th err.Linking palette 0Menus ...
./shared_obj/GormMenuEditor.o(.text+0x1c0f):GormMenuEditor.m: undefined reference to `findAllSubmenus'
./shared_obj/GormMenuInspectors.o(.data+0x6dc):GormMenuInspectors.m: undefined reference to `__objc_class_name_IBInspector'
./shared_obj/GormNSMenu.o(.text+0x304):GormNSMenu.m: undefined reference to `_imp__IBSelectionChangedNotification'
./shared_obj/GormNSMenu.o(.text+0x573):GormNSMenu.m: undefined reference to `_imp__IBSelectionChangedNotification'
./shared_obj/main.o(.data+0xa4c):main.m: undefined reference to `__objc_class_name_IBPalette'
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: no export definition file provided.
Creating one, but that may not be what you want
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: gcc exited with status 1
make[3]: *** [0Menus.palette/./0Menus.dll] Error 1
make[2]: *** [0Menus.all.palette.variables] Error 2
make[2]: Leaving directory `/home/johnmark/Gorm-0.9.0/Palettes/0Menus'
make[1]: *** [internal-all] Error 2
make[1]: Leaving directory `/home/johnmark/Gorm-0.9.0/Palettes'
make: *** [internal-all] Error 2

aaah linker problems.. can u believe that.. all linker problems. everything compiles fine.. but does not link successfully.

-----------------------------------
rizzix
Sun Feb 27, 2005 12:00 pm


-----------------------------------
fixed it a bit (basically the trick the the same as err #1, but here u look at the IBEditors.(h|m) files, and u got to compile some .m files that are not already compiled in the Gorm base directory)

so it is brought down to:Linking palette 0Menus ...
./shared_obj/GormMenuInspectors.o(.data+0x6dc):GormMenuInspectors.m: undefined reference to `__objc_class_name_IBInspector'
./shared_obj/main.o(.data+0xa4c):main.m: undefined reference to `__objc_class_name_IBPalette'
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: no export definition file provided.
Creating one, but that may not be what you want
c:\GNUstep\Development\msys\1.0\mingw\bin\dllwrap.exe: gcc exited with status 1
make[3]: *** [0Menus.palette/./0Menus.dll] Error 1
make[2]: *** [0Menus.all.palette.variables] Error 2
make[2]: Leaving directory `/home/johnmark/Gorm-0.9.0/Palettes/0Menus'
make[1]: *** [internal-all] Error 2
make[1]: Leaving directory `/home/johnmark/Gorm-0.9.0/Palettes'
make: *** [internal-all] Error 2now i'd really appreciate help  :lol:

-----------------------------------
wtd
Sun Feb 27, 2005 12:22 pm


-----------------------------------
Yes, Objective-C is a much more dynamic language than C or C++.  Hence the linker errors.

Also, you may run into serious problems with trying to interchange NSString and "const char*".  The NSString class provides a fair amout of functionality.

-----------------------------------
rizzix
Sun Feb 27, 2005 1:10 pm


-----------------------------------
i didn't change it to const char* just replaced it with @"whatever" (they were constants)

the problem really is linking. for some reason. linking does not work well on windows.


problem right now is that the IBInspector and IBPalette classes which are supposingly archived into a library (Gorm.dll) do not link well with the GormMenuInspectors.o and main.o objct files. i dont see why the darn linker dosent link these object files to the Gorm.dll library. its really annoying.
