Hi Lionel,
No I don't think it's the same.
--disable-static just tell a build not to create the .a (static
libraries) that may be part of the build. The would be needed by
something else wanting to statically link with that package's library.
The .la files are use to allow you to test shared libraries before you
install them, they let you link to a non-install set of libraries. This
is fine for self-hosted development, but will not work when you are
cross compiling. In fact it's worse than that, it will make the cross
compilation pick up host libraries (which will be the wrong architecture).
To try to clarify, if you installed the .la files on the target image,
they could be used if you natively compiled on a board running that
target image. However due to the way LTIB works, it stages the target
image in rootfs and libraries under rootfs/usr/lib are used during cross
compilation. That is why you need to remove these as any .la files
under rootfs will poison your cross compilation.
Regards, Stuart
On 25/01/15 19:22, Leonard Pimentel wrote:
Stuart,
I apologize for the delay. Thank you for the clarification. Is the
option flag "---disable-static" effectively the same as removing the
*.la and *.a files using the "rm --f $RPM_BUILD_ROOT/mypackage/*.la"
command?
Regards,
Leo
*From:*Stuart Hughes [mailto:[email protected]]
*Sent:* Sunday, January 18, 2015 1:23 PM
*To:* Leonard Pimentel
*Cc:* [email protected]
*Subject:* Re: [SOLVED] Cross-compilation errors preventing build
Hi Leonard,
I'm not sure I completely follow, however it is essential that all the
.la files are removed from the binary rpm file.
The reason is that the binary gets installed in the local project area
on the host under rootfs/... any .la files under there will get picked
up by later packages when cross compiling and will cause the compiler
to try to link to libraries under /usr/lib /lib on the host, which is
clearly not what you want.
Regards, Stuart
On 15 Jan 2015, at 18:22, Leonard Pimentel <[email protected]
<mailto:[email protected]>> wrote:
Stuart Hughes,
Thank you. Several times the cross-compilation would interrupt
with errors and I could not understand why the *.la file was
important to the compilation.
It was unforeseen that an innocuous statement would create
cross-compilation build and install problems.
find $RPM_BUILD_ROOT%{pfx}%{_prefix}/lib/ -name "*.la" | xargs rm -f
After removing the above statement, warnings such "file moved" and
the error "no such file or directory found" were commonplace.
http://lists.gnu.org/archive/html/ltib/2010-04/msg00127.html
*From:*Leonard Pimentel
*Sent:*Wednesday, January 14, 2015 11:08 AM
*To:*'[email protected] <mailto:[email protected]>'
*Subject:*Cross-compilation errors preventing build
General cross-compiling question
Are there two solutions (at minimum) to solve the following
warning [file moved] and error [no such file]? I am running into
build errors. Help is appreciated.
_Error log snippet:_
libtool: link: warning: library
`/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3/rootfs/usr/lib/libgstvideo-0.10.la'
was moved.
/bin/sed: can't read /usr/lib/libgstinterfaces-0.10.la: No such
file or directory
libtool: link: `/usr/lib/libgstinterfaces-0.10.la' is not a valid
libtool archive
make[3]: *** [libgstaudiofx.la] Error 1
make[3]: Leaving directory
`/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3/rpm/BUILD/gst-plugins-good-0.10.25/gst/audiofx'
make[2]: *** [audiofx] Error 2
make[3]: Leaving directory
`/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3/rpm/BUILD/gst-plugins-good-0.10.25/gst/debugutils'
make[2]: Leaving directory
`/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3/rpm/BUILD/gst-plugins-good-0.10.25/gst'
make[1]: *** [all-recursive] Error 1
_Snippets from spec file_
__
%define pfx /opt/freescale/rootfs/%{_target_cpu}
%define LOGICPD_DIR
/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3
%Build
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:%LOGICPD_FS/usr/lib/pkconfig
lt_cv_path_NM=nm \
./configure --prefix=%{_prefix} --host=$CFGHOST --build=%{_build} \
--with-pkg-config-path=$PKG_CONFIG_PATH \
CPPFLAGS=-I%LOGICPD_DIR/rootfs/usr/include/gstreamer-0.10/gst \
LDFLAGS=-L%LOGICPD_DIR/rootfs/usr/lib \
%install
rm --rf $RPM_BUILD_ROOT
make install DESTDIR=${RPM_BUILD_ROOT}%{pfx}
The following comment from StackOverflow suggests setting the
dependency_libs section.
Have you looked inside the|libfreetype.la|file? Libtool|.la|files
are just text files describing libraries. By default, they are
commented. Search for the|libdir|and|dependency_libs|settings and
check if they point to the right places.
How can this be accomplished either in the configuration statement
or via a libtool --finish command?
Contents of two .la files. Note the libdir is referenced the file
system directory path under the cross-compilied target.
# libgstinterfaces-0.10.la - a libtool library file
# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgstinterfaces-0.10.so.0'
# Names of this library.
library_names='libgstinterfaces-0.10.so.0.21.0
libgstinterfaces-0.10.so.0 libgstinterfaces-0.10.so'
# The name of the static archive.
old_library='libgstinterfaces-0.10.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=' -pthread'
# Libraries that this one depends upon.
dependency_libs='
-L/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3/rootfs/usr/lib
-lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt
-lxml2 -lglib-2.0 -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgstinterfaces-0.10.
current=21
age=21
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/usr/lib'
libgstaudio-0.10.la - a libtool library file
# Generated by ltmain.sh (GNU libtool) 2.2.6b Debian-2.2.6b-2
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgstaudio-0.10.so.0'
# Names of this library.
library_names='libgstaudio-0.10.so.0.21.0 libgstaudio-0.10.so.0
libgstaudio-0.10.so'
# The name of the static archive.
old_library='libgstaudio-0.10.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=' -pthread'
# Libraries that this one depends upon.
dependency_libs='
-L/home/leo/logic/Logic_BSPs/Linux_3.0/1026167_LogicPD_Linux_BSP_2.4-3/rootfs/usr/lib
-lgstbase-0.10 /usr/lib/libgstinterfaces-0.10.la -lgstreamer-0.10
-lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lxml2 -lglib-2.0 -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgstaudio-0.10.
current=21
age=21
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/usr/lib'
/Leonard Pimentel/
/CEO & CTO/
/Lotus Research, LLC./
/Cell: (917) 834-7533/
/<image001.png>/
<http://www.linkedin.com/pub/leonard-pimentel/3/a0a/796>
_______________________________________________
LTIB home page: http://ltib.org
Ltib mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/ltib