Geir Magnusson Jr. wrote:
Gregory Shimansky wrote:
Hello

Today I tried to check what happens on x86_64 and I think I've found some issues which need discussion

1. When classlib starts its built it tries to link 3 libraries and headers to depends/libs/build/{jpeg,lcms,png} directories. On x86_64 SuSE9 it has failed for me to find lcms and png libraries because they happen to be in /usr/lib64. This should not be the case on Gentoo because /usr/lib is a link to /usr/lib64, but it looks like not all distributions follow this way. So probably searching /usr/lib64 first should be done on x86_64.

2. I've linked liblcms.a and libpng.a in /usr/lib64 by hands but then linker complained that they cannot be used because relocations have to be done. I've replaced links with links to *shared* libs and it seems to have worked ok. For some reason libjpeg.a found in /usr/lib didn't cause the problems. But anyway, I'd like to ask a question, why do we want static linking? Not all distributions supply static versions of these libraries, for example I found none in Fedora 5 even on x86. Why not switch to shared libraries?

I do think we want to use static compilation to be sure of what we're running with.

But what if static library was not compiled with -fpic and just cannot be linked to dynamic library of classlib? I didn't imagine the problem, it does happen, linker complains that I need to recompile it with -fpic.

When we link against static libraries supplied by the distribution we don't control the library as well, it was built somewhere by someone with unknown compilation options and the version of package is not really known. What is the difference with dynamic libraries here? What to do with distributions which no longer supply static libraries for needed packages?

We could of course end up checking binaries in into SVN just like we did ICU libraries. Now that I think of it, it may be the only option because HDK binary snapshot has to work on any linux installation, even one which don't have lib{png,jpeg,lcms}.so installed at all.

3. ICU libraries in HARMONY-1678 had to be linked as well because build wants libicu*.so.34 while libraries in the archives have libicu*.so.34.1 names. Shouldn't they be added to SVN like depends/libs/linux.x86 ones with the same names as build wants?

4. Classlib always builds to "deploy" directory. When working with different architectures it is good when output directories for all files including object files are different. Otherwise it is necessary to create separate repositories for every one of them or do clean rebuild on every switch and never forget which version of classlib is currently built. Could we change classlib build to create object files in directories with architecture postfix and final output to something like "deploy-x86_64"? Also we could separate debug/release built files in the same way.

+1

--
Gregory

Reply via email to