On 2 June 2011 12:51, Alain Plantec <alain.plantec@yahoo.com> wrote:
Hi Bill,
Thanks for your help. For now, I'm just trying to compile my own vm to learn. to me, the stderr message "ioLoadModule(libFT2Plugin.so): Â libFT2Plugin.so: cannot open shared object file: No such file or directory" means that the external libFT2Plugin.so fails while trying to load a library. I guess, it is the libfreetype.so which is in /usr/lib, a standard location.
To find out what is the problem, I've tried to compile the ft2plugin as an internal one. I've succeed in compiling it after a method addition in the plugin (FT2Plugin>>#bytesPerWord) and with the adding of -lfreetype for the final linking of cogVM. I've manually added it, I mean in the linux console. so, first step, I have a vm, compiled by myself and with a functional FT2Plugin, yes!!! cool.
Now I'm trying to figure out how to automatically add "-lfreetype" for the linking invocation. lost in the plugin/cmake infrastructure jungle .... :)
Add following to CogFamilyUnixConfig>>configureFT2Plugin: gen "extra rules for FT2Plugin" | generator | generator := maker isExternal ifTrue: [ gen ] ifFalse: [ gen vmGenerator ]. generator addExternalLibraries: #( 'freetype' "freetype library" ). This will force maker to link against freetype library. (actually i think better would be to override the #addExternalLibraries: in CMakePluginGenerator which will add libraries to vm generator, if plugin is internal. So in configureXYZPlugin: , you can just write: gen addExternalLibraries: #( .. ) without testing if plugin is internal or external.
as a second step, I will come back to the compiling of FT2Plugin as an external plugin.
Cheers Alain
02/06/2011 02:59, Schwab,Wilhelm K a écrit :
Alain,
Sig's answer leaves me doubting my suspicion, but I will toss it out anyway, and since you are building a vm, you can pretty easily run through the exercise.
First, the question: what (full path) library is the vm trying to load? Â It really is a plugin, so some of my more common concerns (extra slashes in the path, so.Name instead of libName.so, etc., go away - or do they??).
Sadly, I don't see the code I want to give you on this machine. Â Maybe my laptop will have some friendly symlinks to the tweaked files. Â In short, I think that any time the (particularly linux) vm translates a number to to a name or a name to a path, and the subsequent load fails, it should say something somewhere about what it tried to open/load. Â I have used syslog() to good effect. Â It's nice because the logs rotate, giving some time for the user to look for it and yet not clog the drive with old news.
Ok; I'll shut up and see if I can find some code for you :)
Bill
________________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Alain Plantec [alain.plantec@yahoo.com] Sent: Wednesday, June 01, 2011 2:00 PM To: pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Compiling and using the FT2Plugin
Le 01/06/2011 19:46, Igor Stasenko a écrit :
On 1 June 2011 19:20, Alain Plantec<alain.plantec@yahoo.com> Â wrote:
Hi all, I try to build my own vm (ubuntu 10.04, virtualbox) Thanks to the **excellent** Mariano blog, I can compile, it runs ok except the FT2Plugin I always have the following error message while trying to load fonts:
ioLoadModule(libFT2Plugin.so): Â libFT2Plugin.so: cannot open shared object file: No such file or directory
I guess that it is because the plugin is unable to load libfreetype.so. does someone know what I am missing ?
i know. ;)
i wanna add a correct settings for building this plugin on all platforms. so we can ship a vm with this plugin by default. But i haven't time to do it yet. So, if you find a solution how to do it for unix, i will capture your knowledge in corresponding config(s) :)
ahhhhh! thanks Igor I'm not so stupid, its a problem :) ok, I will try Cheers Alain
thanks Alain
-- Best regards, Igor Stasenko AKA sig.