linux automake 交叉編譯


.
├── aclocal.m4
├── autoscan.log
├── config.log
├── config.status
├── configure
├── configure.in
├── Makefile
├── Makefile.am
├── Makefile.in
└── src
     ├── face
     │   ├── face.cpp
     │   ├── face.h
     │   ├── face.o
     │   ├── libface.a
     │   ├── Makefile
     │   ├── Makefile.am
     │   └── Makefile.in
     ├── main.cpp
     ├── main.o
     ├── Makefile
     ├── Makefile.am
     └── Makefile.in

  configure.in

AC_PREREQ([2.65])
AC_INIT(main,1.0)
AC_CONFIG_SRCDIR([src/main.cpp])
#AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_RANLIB       #使用了靜態庫編譯,需要此宏定義
# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT(Makefile src/Makefile src/face/Makefile) 

  Makefile.am

AUTOMAKE_OPTIONS=foreign
SUBDIRS=src   #本目錄的直接下級目錄src需要編譯
#EXTRA_DIST=doc/userguide #doc/userguide不需要編譯,但要發布該文件。如果有多個文件,則用空格分開。

  src/Makefile.am

AUTOMAKE_OPTIONS=foreign
SUBDIRS=face #本目錄的直接下級目錄face需要編譯
bin_PROGRAMS=main #本目錄的文件編譯成可執行文件hello。如有多個,用空格分開。然后在下面分別寫它們的SOURCE和LDADD。
main_SOURCES=main.cpp #編譯hello需要的源文件列表,如有多個,用空格分開。
main_LDADD=face/libface.a #編譯hello需要的庫文件列表。如有多個,用空格分開。

  src/face/Makefile.am

AUTOMAKE_OPTIONS=foreign
noinst_LIBRARIES=libface.a   #本目錄下的代碼編譯成libhello.a庫。不需要發布。如果需要發布,則寫成bin_LIBRARIES。注意,庫的名稱格式必需為 libxxx.a。因為編譯靜態庫,configure.in需要定義AC_PROG_RANLIB宏。
libface_a_SOURCES=face.h face.cpp #編譯libhello.a需要的源文件。注意將庫名稱中的'.'號改成'_'號。 

  

運行 

automake --add-missing。
    
./configure

make


交叉編譯

./configure --host=arm-linux CPPFLAGS="-I/usr/local/include" LDFLAGS="-lrt -lpthread -lm -ldl  /root/code/auto/arm/opencv/lib/libopencv_objdetect.so"

make

#CPPFLAGS include的設置

#LDFLAGS lib的設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM