OS失敗通過使用automake共享庫。 但我得到一個錯誤,automake可能無法處理相同名稱和不同目錄的源代碼。 我不能使用automake在不同的目錄中編譯相同的文件名源代碼嗎?(的automake,libtool的)建立的automake在不同的目錄
例如,lib_sample/lib.c,lib_sample/enhance/lib.c這兩個文件是相同的名稱,但源和目錄不同。
此外,輸入配置後,我檢查src目錄,奇怪的目錄($(LIB_DIR))被創建。
的./configure --with-LIB = /家庭/用戶/工作區/ lib_sample --enable-提高
LS的src/
$(LIB_DIR)生成文件Makefile.am Makefile.in mod_sample.c
- > $(LIB_DIR)已創建。意外的目錄被創建。
當我輸入make命令時,出現錯誤信息。
錯誤消息看起來像這樣。
Makefile:423: /src/.deps/lib.Plo: No such file or directory
Makefile:424: /src/enhanced/.deps/lib.Plo: No such file or directory
make[1]: *** No rule to make target `/src/enhanced/.deps/lib.Plo'. Stop.
make[1]: Leaving directory `/home/user/test/mod_sample/src'
make: *** [all-recursive] Error 1
第一個問題是,在configure腳本之後,$(LIB_DIR)目錄被創建。
第二個問題是當我輸入make命令時,生成源代碼失敗。 我認爲libtool在嘗試製作.Plo文件時無法編譯,但我無法理解的是爲什麼automake會嘗試編譯lib_sample/src/lib.c。 因爲在編譯./configure腳本中的源代碼之前,我使用--with-lib和--enable-enhance選項表示LIB_DIR路徑。因此,automake不應該管理src/lib.c。 但是,automake會嘗試編譯lib_sample/src/lib.c並且出現奇怪的消息。
你可以在下面看到代碼,以及詳細的項目結構。
在此先感謝。
這裏詳細介紹。
有兩個目錄。
/家庭/用戶/測試/ mod_sample,(建立失敗)
/家庭/用戶/測試/ lib_sample(在這裏另一源代碼)
configure.ac(/家/用戶/test/mod_sample/configure.ac)
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(sample, 1.5.0)
AC_PROG_CC
AC_PROG_CXX
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE([subdir-objects])
AM_PROG_CC_C_O
LT_INIT
AC_PROG_LIBTOOL
AC_MSG_CHECKING(--with-lib)
AC_ARG_WITH([lib],
AC_HELP_STRING([--with-lib=DIR], [Set lib path ]),
[LIB_DIR=$withval]
[have_lib=yes],
[have_lib=no])
AC_MSG_RESULT($LIB_DIR)
AC_SUBST(LIB_DIR)
AC_ARG_ENABLE([[enhance]],
[AS_HELP_STRING([[--disable-enhance]], [enhance])], ,
[enable_enhance=yes])
test "x$enable_enhance" = "xno" || enable_enhance=yes
AM_CONDITIONAL([HAVE_ENHANCE], [test "x$enable_enhance" = "xyes"])
AC_CONFIG_FILES(Makefile
include/Makefile
src/Makefile)
AC_OUTPUT
頂部目錄Makefile.am(/home/user/test/mod_sample/Makefile.am)
SUBDIRS=src include
src/Makefile.am(/ home/user/test/mod_sample/src/Makefile。AM)
運行configure命令前做
autoreconf - 如果
的./configure --with-LIB = /家庭/用戶/工作區/ lib_sample --enable-增強
當我輸入'make'時出現錯誤信息。
Makefile:423: /src/.deps/lib.Plo: No such file or directory
Makefile:424: /src/enhanced/.deps/lib.Plo: No such file or directory
make[1]: *** No rule to make target `/src/enhanced/.deps/lib.Plo'. Stop.
make[1]: Leaving directory `/home/user/test/mod_sample/src'
make: *** [all-recursive] Error 1
lib_sample目錄結構(在不同的目錄文件名相同)
/home/user/workspace/lib_sample/lib.c
/家庭/用戶/工作區/ lib_sample /增強/ lib.c
lib_sample/lib.c
void lib()
{
printf("hello\n");
}
lib_sample /增強/ lib.c
void lib()
{
printf("enhance hello\n");
}
你說你有錯誤?從什麼命令?錯誤是什麼?什麼*確切*在這裏不工作? –