溫馨提示×

GCC編譯腳本怎么編寫

小樊
43
2025-09-22 17:38:41
欄目: 編程語言

編寫一個GCC編譯腳本可以幫助你自動化編譯過程,特別是在處理多個源文件或需要設置特定編譯選項時。以下是一個簡單的示例,展示了如何編寫一個GCC編譯腳本。

假設我們有一個項目,包含以下文件:

  • main.c
  • utils.c
  • utils.h

我們將這些文件編譯成一個可執行文件 myprogram。

步驟1:創建源文件

首先,創建上述文件并添加一些簡單的代碼。

main.c

#include <stdio.h>
#include "utils.h"

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

utils.c

#include <stdio.h>
#include "utils.h"

void print_message() {
    printf("This is a utility function.\n");
}

utils.h

#ifndef UTILS_H
#define UTILS_H

void print_message();

#endif

步驟2:編寫編譯腳本

創建一個名為 build.sh 的腳本文件,并添加以下內容:

#!/bin/bash

# 設置編譯器
CC=gcc

# 設置編譯選項
CFLAGS=-Wall -g

# 設置源文件和目標文件
SRCS=main.c utils.c
OBJS=${SRCS%.c}.o
TARGET=myprogram

# 編譯規則
all: $(TARGET)

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# 清理規則
clean:
	rm -f $(OBJS) $(TARGET)

.PHONY: all clean

步驟3:運行編譯腳本

  1. 確保腳本文件 build.sh 具有執行權限:

    chmod +x build.sh
    
  2. 運行腳本:

    ./build.sh
    

這將編譯源文件并生成可執行文件 myprogram。

解釋

  • CC=gcc:設置編譯器為 gcc。
  • CFLAGS=-Wall -g:設置編譯選項,-Wall 表示顯示所有警告,-g 表示包含調試信息。
  • SRCS=main.c utils.c:列出所有源文件。
  • OBJS=${SRCS%.c}.o:將源文件列表轉換為對象文件列表。
  • TARGET=myprogram:設置目標可執行文件的名稱。
  • all: $(TARGET):定義默認目標為生成可執行文件。
  • $(TARGET): $(OBJS):定義如何生成目標文件。
  • %.o: %.c:定義如何從源文件生成對象文件。
  • clean::定義清理規則,刪除生成的對象文件和可執行文件。
  • .PHONY: all clean:聲明 allclean 是偽目標,即使存在同名文件也會執行。

通過這種方式,你可以輕松地管理和編譯多個源文件,并且可以通過修改腳本來自定義編譯過程。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女