It's clear now.  One more question, I just installed liblua5.2-0 and it linked 
happily, what else does the "dev" package offer for development?

Thanks,
Shannon

在 日, 12月 30, 2012 at 11:54 下午,Sven Barth <[email protected]> 写道:
On 30.12.2012 16:47, xrfang wrote: 
> Hi All, 
> 
> While I compile my program which uses liblua52.so, Lazarus refuse to 
> compile if it cannot find the so file. But on windows, it compile 
> happily without the DLL file. 
> 
> As far as I understand dynamic link libraries are only required at 
> runtime, why lazarus require it on compilation? 

First you need to understand that libraries can be dynamically linked in two 
ways: 
* at runtime 
* at linktime 

The first case is when you (or e.g. an unit) does a LoadLibrary and manually 
queries for each function it needs (often done by the database units provided 
by Lazarus). The other method is used when you have methods declared with 
"external Bar name Foo". Then the library name and the functions that are 
imported are mentioned in the import section of the resulting executable and 
the OS loader ensures that the libraries are loaded and initialized before the 
main application starts. If such a library is missing at program startup you'll 
get an error message. 

And here is where a difference between Windows and Unix systems lies (Note: 
your lua52 unit uses the second case): on Windows it is enough to know the 
library name and the function name and if the library is missing at link time 
this doesn't matter. On Unix though you must have the library available, 
because the linker needs information that is only provided inside the library 
file itself, because the filename is less important on Unix systems. 

So this is not the fault of Lazarus (or Free Pascal to be more precise, as 
Lazarus is only the IDE which calls FPC), but of the different concepts used on 
Unix. 

Solution: just install the dev package of your distribution and it should work. 

Regards, 
Sven 


-- 
_______________________________________________ 
Lazarus mailing list 
[email protected] 
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to