ecere.sym file generation

Help understanding and fixing compiling errors.
Post Reply
jfbilodeau
Posts: 19
Joined: Wed Feb 09, 2011 11:47 am

ecere.sym file generation

Post by jfbilodeau »

Good day,

I mucked up a Makefile somewhere and ear does not build anymore. It's complaining that it cannot find ecere.sym---and neither can I. Where/how is this file generated?

Thanks!

J-F
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Post by jerome »

ecere.sym does not exist.

sym files are generated by the precompiler, they list the symbols available in an .ec. file for use by importing in other .ec files.

What it's not finding is libecere.dylib , perhaps cause it's not in your path as before , or did not get built, or did not get copied?
jfbilodeau
Posts: 19
Joined: Wed Feb 09, 2011 11:47 am

Re: ecere.sym file generation

Post by jfbilodeau »

hum...that's not what the compiler seems to say:

Code: Select all

...
Building 2nd stage ecere...
/Users/jfbilodeau/Downloads/ecere/ear/cmd/ear.ec:13:1: error: Couldn't open obj/release.apple/ecere.sym
/Users/jfbilodeau/Downloads/ecere/ear/cmd/ear.ec:13:1: error: Couldn't open obj/release.apple/ecere.sym
/Users/jfbilodeau/Downloads/ecere/ear/cmd/ear.ec:52:32: error: syntax error
...
The compiled lib in DYLD_LIBRARY_PATH.

Any ideas?
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Post by jerome »

The compiler first looks for a dylib/dll/so.
But when it can't find one, it gets set on finding a .sym .

Are you sure you have a valid libecere.dylib in your DYLD_LIBRARY_PATH?

What changed since before when it worked? :)

If for any reason the dylib is not properly built or loading, it will also say that.
The only way to know for sure what's going on would be to step through the compiler code when it tries to load libecere.dylib... Though I suggest trying to figure out what happened is going to be faster & easier by far!
jfbilodeau
Posts: 19
Joined: Wed Feb 09, 2011 11:47 am

Re: ecere.sym file generation

Post by jfbilodeau »

:P

I haven't changed anything in ear, but I did add CocoaInterface.ec to ecere/ecere.epj and ran epj2make on it. The lib seems to build find, but barfs at ear.

I copied an older version of ecere.dylib to obj/apple/lib, and now I get a different funk:

Code: Select all

Kluya:ecere jfbilodeau$ make clean
....
Kluya:ecere jfbilodeau$ make
Bootstrapping eC compiling tools...
Building ecere...
Building ec...
Building ecp...
Building ecc...
Building ecs...
All done!
Building dependencies...
Building libjpeg...
Building libpng...
Building libungif...
Building 2nd stage ecere...
make[1]: *** No rule to make target `cleantarget'.  Stop.
make: *** [ecere] Error 2
I don't know if that's related, but I keep getting this warning:

Code: Select all

ld: warning: ___ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof has different visibility (hidden) in ../libec/obj/bootstrap.apple/libecBootstrap.a(loadSymbols.o) and (default) in obj/bootstrap.apple/ecs.main.o
ld: warning: ___ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek has different visibility (hidden) in ../libec/obj/bootstrap.apple/libecBootstrap.a(loadSymbols.o) and (default) in obj/bootstrap.apple/ecs.main.o
ld: warning: ___ecereVMethodID___ecereNameSpace__ecere__sys__File_Read has different visibility (hidden) in ../libec/obj/bootstrap.apple/libecBootstrap.a(pass15.o) and (default) in obj/bootstrap.apple/ecs.main.o
I'm not too concerned about the above warning, since it's been there since I first compiled Ecere.

J-F
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Post by jerome »

Which version of GCC are you using?
I think Ecere needs GCC 4 on Unix based system, which added this 'visibility' control.
What could be happening is that when loading libecere.dylib, it can't find the EcereDll_Load function which eC needs to load the module, because of a hidden visibility.

I suggest comparing the makefiles with the original Makefiles in the tarball which you used that worked fine, and watch out for any -visibility flag differences.

hidden means it won't be visible outside of the dylib .

'public' functions should end up with a 'default' visibility, whereas 'private' ones should end up with hidden.

You could take a look in release.apple/ecere.main.c for __ecereDll_Load , and see what attributes there are in front there.

In fact -fvisibility=hidden should be what you have in the Makefile I believe.
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Post by jerome »

Note, the bootstrap process goes a bit differently with those visibility rules.

Once you have a working compiler, you shouldn't need to build from the bootstrap anymore, you can work with the installed compiler, and just work on building a new libecere.dylib from the ecere.epj.
Post Reply