Ecere SDK/eC Forums • View topic - ecere.sym file generation




Ecere SDK/eC Forums

Ecere Developers Community

ecere.sym file generation

Help understanding and fixing compiling errors.

ecere.sym file generation

Postby jfbilodeau » Wed Feb 09, 2011 1:52 pm

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
jfbilodeau
 
Posts: 19
Joined: Wed Feb 09, 2011 11:47 am

Re: ecere.sym file generation

Postby jerome » Wed Feb 09, 2011 2:07 pm

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?
jerome
Site Admin
 
Posts: 621
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Postby jfbilodeau » Wed Feb 09, 2011 2:10 pm

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?
jfbilodeau
 
Posts: 19
Joined: Wed Feb 09, 2011 11:47 am

Re: ecere.sym file generation

Postby jerome » Wed Feb 09, 2011 2:44 pm

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!
jerome
Site Admin
 
Posts: 621
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Postby jfbilodeau » Wed Feb 09, 2011 3:03 pm

: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
jfbilodeau
 
Posts: 19
Joined: Wed Feb 09, 2011 11:47 am

Re: ecere.sym file generation

Postby jerome » Wed Feb 09, 2011 3:11 pm

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: 621
Joined: Sat Jan 16, 2010 11:16 pm

Re: ecere.sym file generation

Postby jerome » Wed Feb 09, 2011 3:13 pm

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.
jerome
Site Admin
 
Posts: 621
Joined: Sat Jan 16, 2010 11:16 pm


Return to Compiler Errors

Who is online

Users browsing this forum: No registered users and 4 guests

cron