Я новичок в использовании libtool, просто попробовав его. Следуя различным руководствам и подсказкам, которые я нахожу в Интернете, я запускаю его следующим образом:libtool не создает общую библиотеку
(изменить: обновленный и расширенный вопрос с дополнительной информацией).
$ cat /etc/debian_version
6.0.6
$ libtool --version
ltmain.sh (GNU libtool) 2.2.6b
Written by Gordon Matzigkeit <[email protected]>, 1996
$ cat hello.c
int function(int a)
{
return a + 1;
}
$ libtool --mode=compile gcc -Wall -c hello.c
libtool: compile: gcc -Wall -c hello.c -fPIC -DPIC -o .libs/hello.o
libtool: compile: gcc -Wall -c hello.c -o hello.o >/dev/null 2>&1
$ libtool --mode=link gcc -rpath=/usr/local/lib -o libhello.la hello.lo
libtool: link: ar cru .libs/libhello.a .libs/hello.o
libtool: link: ranlib .libs/libhello.a
libtool: link: (cd ".libs" && rm -f "libhello.la" && ln -s "../libhello.la" "libhello.la")
Это не производит мой хотел * .so файл, только * .o * и .lo файлы, файл libhello.la и каталог .libs:
$ ls * .libs
hello.c hello.lo hello.o libhello.la
.libs:
hello.o libhello.a libhello.la
$ nm .libs/libhello.a
hello.o:
0000000000000000 T function
$ cat libhello.la
# libhello.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=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libhello.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libhello.
current=
age=
revision=
# Is this an already installed library?
installed=no
# 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=''
Система может построить файл общей библиотеки:
gcc -shared -o libhello.so -fPIC hello.c
$ file libhello.so
libhello.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
Что мне не хватает?
Примечание: я не использую другие вещи для автотюнинга; Я предположил, что libtool может работать сам по себе (большинство ответов, которые, как я вижу, связаны с этой проблемой, упоминают autotools, например, опцию для шага configure
. Очевидно, у меня этого нет).
Джек, спасибо за предоставление ответа после этого времени. Тем не менее, это все еще не дает мне общую библиотеку. У меня такое чувство, что я недопонимаю libtool, но я не могу понять, что это такое. – Evert
Можете ли вы опубликовать несколько сообщений о том, что происходит, когда вы запускаете эти команды? Он успешно создает общую библиотеку в моей системе. (Ubuntu (Precise) GNU/Linux, libtool 2.4.2). –
Я обновил свой вопрос с дополнительной информацией: в основном именно команды, которые я запускаю и выводя, получаю. Надеюсь, он все еще доступен для чтения. – Evert