Lệnh automake trong Linux

Giới thiệu

Trong lab này, chúng ta sẽ tìm hiểu về công cụ Automake, được sử dụng để tạo Makefiles cho các dự án phần mềm. Automake là một phần của hệ thống build GNU và thường được sử dụng trong phát triển phần mềm mã nguồn mở. Chúng ta sẽ bắt đầu bằng cách cài đặt các gói cần thiết để sử dụng Automake, sau đó tạo một dự án Automake cơ bản và tạo Makefile. Cuối cùng, chúng ta sẽ khám phá cách tùy chỉnh cấu hình Automake để phù hợp với nhu cầu của dự án.

Các bước trong lab này bao gồm giới thiệu về Automake, tạo một dự án Automake cơ bản và tùy chỉnh cấu hình Automake. Lab này nhằm mục đích cung cấp một sự hiểu biết thực tế về việc sử dụng Automake để quản lý các quy trình build phần mềm.

Giới thiệu về Automake

Trong bước này, chúng ta sẽ tìm hiểu về công cụ Automake, được sử dụng để tạo Makefiles cho các dự án phần mềm. Automake là một phần của hệ thống build GNU và thường được sử dụng trong phát triển phần mềm mã nguồn mở.

Automake là một công cụ tự động tạo Makefiles từ một tệp mô tả cấp cao hơn gọi là Makefile.am. Tệp này chứa các hướng dẫn để build, cài đặt và phân phối phần mềm. Automake đảm nhận các chi tiết của việc tạo Makefile, cho phép các nhà phát triển tập trung vào cấu trúc dự án và quy trình build.

Hãy bắt đầu bằng cách cài đặt các gói cần thiết để sử dụng Automake:

sudo apt-get update
sudo apt-get install -y automake

Ví dụ đầu ra:

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Get:5 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [588 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [748 kB]
Fetched 3451 kB in 2s (2032 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
automake is already the newest version (1:1.16.5-1.1ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Bây giờ chúng ta đã cài đặt Automake, chúng ta có thể bắt đầu tạo một dự án Automake cơ bản trong bước tiếp theo.

Tạo một dự án Automake cơ bản

Trong bước này, chúng ta sẽ tạo một dự án Automake cơ bản và tạo Makefile.

Đầu tiên, hãy tạo một thư mục mới cho dự án của chúng ta và điều hướng đến nó:

mkdir ~/project/automate-demo
cd ~/project/automate-demo

Tiếp theo, chúng ta cần tạo các tệp Automake ban đầu. Chúng ta sẽ bắt đầu với tệp configure.ac, chứa cấu hình cấp cao cho dự án:

touch configure.ac

Mở tệp configure.ac trong một trình soạn thảo văn bản và thêm nội dung sau:

AC_INIT([automate-demo], [1.0], [[email protected]])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_OUTPUT

Cấu hình này đặt tên dự án, phiên bản và địa chỉ email của người bảo trì, khởi tạo Automake và chỉ định rằng chúng ta muốn sử dụng trình biên dịch C.

Bây giờ, hãy tạo tệp Makefile.am, chứa các hướng dẫn để build dự án:

touch Makefile.am

Mở tệp Makefile.am và thêm nội dung sau:

AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = hello
hello_SOURCES = main.c

Tệp Makefile.am này chỉ định rằng chúng ta muốn build một chương trình có tên là "hello" từ tệp nguồn main.c.

Bước cuối cùng là tạo Makefile từ các tệp Automake:

autoreconf -i

Lệnh này sẽ tạo Makefile và các tệp cần thiết khác cho dự án.

Ví dụ đầu ra:

autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
libtoolize: copying file 'config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'config'.
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory '.'

Bây giờ, chúng ta đã thiết lập một dự án Automake cơ bản và chúng ta có thể chuyển sang bước tiếp theo để tùy chỉnh cấu hình.

Tùy chỉnh cấu hình Automake

Trong bước này, chúng ta sẽ tùy chỉnh cấu hình Automake để thêm nhiều chức năng hơn cho dự án của chúng ta.

Đầu tiên, hãy tạo một chương trình C đơn giản mà chúng ta sẽ build bằng Automake. Tạo một tệp mới có tên là main.c trong thư mục ~/project/automate-demo với nội dung sau:

#include <stdio.h>

int main() {
    printf("Hello, Automake!\n");
    return 0;
}

Bây giờ, hãy cập nhật tệp Makefile.am để bao gồm tệp main.c mới và thêm một target tùy chỉnh:

cat << EOF > ~/project/automate-demo/Makefile.am
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = hello
hello_SOURCES = main.c
install-data-local:
    @echo "Custom install step"
EOF

Target install-data-local mới sẽ được thực thi trong bước make install.

Tiếp theo, hãy cập nhật tệp configure.ac để thêm một tùy chọn cấu hình tùy chỉnh:

cat << EOF > ~/project/automate-demo/configure.ac
AC_INIT([automate-demo], [1.0], [[email protected]])
AM_INIT_AUTOMAKE
AC_PROG_CC
AC_ARG_ENABLE([debug],
              [AS_HELP_STRING([--enable-debug],
                             [enable debugging])],
              [debug=yes], [debug=no])
AC_MSG_CHECKING([whether to enable debugging])
AC_MSG_RESULT([$debug])
AM_CONDITIONAL([DEBUG], [test "$debug" = yes])
AC_OUTPUT
EOF

Cấu hình này thêm một tùy chọn --enable-debug có thể được sử dụng để bật gỡ lỗi khi build dự án.

Bây giờ, hãy tạo Makefile và build dự án:

cd ~/project/automate-demo
autoreconf -i
./configure
make

Ví dụ đầu ra:

checking whether to enable debugging... no
make  all-am
make[1]: Entering directory '/home/labex/project/automate-demo'
gcc -DPACKAGE_NAME=\"automate-demo\" -DPACKAGE_TARNAME=\"automate-demo\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"automate-demo\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -I. -g -O2 -MT hello-main.o -MD -MP -MF .deps/hello-main.Tpo -c -o hello-main.o main.c
mv -f .deps/hello-main.Tpo .deps/hello-main.Po
gcc -g -O2 -o hello hello-main.o
make[1]: Leaving directory '/home/labex/project/automate-demo'

Chúng ta có thể cài đặt dự án ngay bây giờ:

sudo make install

Ví dụ đầu ra:

make[1]: Entering directory '/home/labex/project/automate-demo'
 /usr/bin/mkdir -p '/usr/local/bin'
 /usr/bin/install -c 'hello' '/usr/local/bin/hello'
Custom install step
make[1]: Leaving directory '/home/labex/project/automate-demo'

Target install-data-local tùy chỉnh đã được thực thi trong quá trình cài đặt.

Tóm tắt

Trong lab này, chúng ta đã học về công cụ Automake, được sử dụng để tạo Makefiles cho các dự án phần mềm. Chúng ta bắt đầu bằng cách cài đặt các gói cần thiết để sử dụng Automake, sau đó tạo một dự án Automake cơ bản bằng cách tạo các tệp Automake ban đầu, bao gồm các tệp configure.acMakefile.am. Chúng ta cũng đã học cách tùy chỉnh cấu hình Automake để phù hợp với nhu cầu của dự án, chẳng hạn như thêm các tệp nguồn, thư viện và target cài đặt.

400+ câu lệnh phổ biến trong Linux