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
ecere.sym file generation
Re: ecere.sym file generation
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?
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?
-
- Posts: 19
- Joined: Wed Feb 09, 2011 11:47 am
Re: ecere.sym file generation
hum...that's not what the compiler seems to say:
The compiled lib in DYLD_LIBRARY_PATH.
Any ideas?
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
...
Any ideas?
Re: ecere.sym file generation
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!
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!
-
- Posts: 19
- Joined: Wed Feb 09, 2011 11:47 am
Re: ecere.sym file generation
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
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
J-F
Re: ecere.sym file generation
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.
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.
Re: ecere.sym file generation
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.
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.