質問
私のプロジェクトモジュールに編成されていsubdirsのためのヘ.
私のプロジェクトdir階層:
$ ls -R
.: configure.in Makefile.am Makefile.cvs src
./src: log Makefile.am main.cpp
./src/log: log.cpp Makefile.am
ルを作成します。:
AC_INIT(configure.in)
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE(myapp, 0.1)
AC_LANG_CPLUSPLUS
AC_PROG_CXX
AM_PROG_LIBTOOL
AC_OUTPUT(Makefile src/Makefile src/log/Makefile)
Makefile.am:
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src
Makefile.cvs:
default:
aclocal
libtoolize --force --copy
autoheader
automake --add-missing --copy
autoconf
src/Makefile.am
bin_PROGRAMS = myapp
myapp_SOURCES = main.cpp
SUBDIRS = log
myapp_LDADD = $(top_builddir)/src/log/liblog.la
src/log/Makefile.am:
INCLUDES = $(all_includes)
METASOURCES = AUTO
noinst_LTLIBRARIES = liblog.la
liblog_la_SOURCES = log.cpp
src/main.cpp: 含む int main(){}
, src/log/log.cpp 含む void f(){}
.
を呼び出す make
生(編集のための簡潔):
libtool --mode=compile g++ -MT log.lo -MD -MP -MF .deps/log.Tpo -c -o log.lo log.cpp
libtool: compile: g++ -MT log.lo -MD -MP -MF .deps/log.Tpo -c log.cpp -fPIC -DPIC -o .libs/log.o
libtool: compile: g++ -MT log.lo -MD -MP -MF .deps/log.Tpo -c log.cpp -o log.o >/dev/null 2>&1
mv -f .deps/log.Tpo .deps/log.Plo
libtool --mode=link g++ -o liblog.la log.lo
libtool: link: ar cru .libs/liblog.a .libs/log.o
libtool: link: ranlib .libs/liblog.a
libtool: link: ( cd ".libs" && rm -f "liblog.la" && ln -s "../liblog.la" "liblog.la" )
g++ -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp
mv -f .deps/main.Tpo .deps/main.Po
libtool --mode=link g++ -o myapp main.o ../src/log/liblog.la
libtool: link: g++ -o myapp main.o ../src/log/.libs/liblog.a
問題は第三線 log.cpp はめ!
という問いに なぜないでくださ一度取り半分の時間がかかる?
注意: いるかは知らないしかったので、良かった--autotoolsはブラックマジックは私に、私たちは利用します。のドキュメントは理解不能です。
解決
フォーバを作成し、二種類の図書館:静的及び共用となります。(通称libfoo.a libfoo.で)
静的およびシャードとは異なる編集フラグがあります。動的ライブラリ--共有オブジェクト 使用位置を独立したコードは、以下のgccグ:
-fPIC -DPIC
静的ではない。できる力を構築レーターによるspecifing
./configure --disable-shared
または
./configure --disable-static
格付の理由
通常時に図書館提供のためのユーザに提供する場合の二つの構築--静的な開発を可能にするを静電気の発動のための使用によるも プログラムを使用するこの図書館があります。なので、通常インストールすると図書館システム ごみ置の共有オブジェクトです。(通称libfoo_XYZ.deb)
き追加開発のバージョン(通称libfoo-dev_XYZ.バ)への追加ヘッダおよび静的 構築の図書館可能にするユーザーはstaicを築いwhant.
この共通の練習船の図書館にUNIX.このようにバのはこのために きます。