03 พฤศจิกายน 2553

การ Compile ไฟล์ Object (*.o) และรวมเป็นไฟล์ execute




          เราสามารถแยกโครงสร้าง class และ เนื้อของ class (method ต่างๆใน class) และ ไฟล์ที่มีการใช้งาน class (มีการสร้าง Object ด้านใน) ออกเป็น 3 ไฟล์ และทำการ Compile โดยที่ให้ โครงสร้าง class ที่เป็น header file ไฟล์ (.h) เป็นตัวเชื่อม โดยที่ ไฟล์เนื้อของ class และไฟล์ที่มีการใช้งาน class มีการ include header file




ตัวอย่างไฟล์ โครงสร้าง class (data.h)
#include <iostream>
using namespace std;

class Data{
        private:
                int a;
        public:
                Data();
                ~Data();
                void setData(int a);
};

ตัวอย่างไฟล์ เนื้อ class (data.cpp)
#include "data.h"
using namespace std;

Data::Data(){
        cout << "Create Object" << endl;
}

Data::~Data(){
        cout << "Destroy Object" << endl;
}

void Data::setData(int a){
        this->a = a;
        cout << "Set Data Complete : a=" << this->a << endl;
}

ตัวอย่างไฟล์ที่มีการใช้งาน class (main.cpp)
#include <iostream>
#include "data.h"
using namespace std;

int main(){
        Data D;
        D.setData(5);
        return 0;
}

ขั้นตอนการ Compile โปรแกรม
1.Compile Object ไฟล์ data.cpp จะได้เป็น data.o
g++ -c data.cpp -o data.o

2.Compile Object ไฟล์ main.cpp จะได้เป็น main.o
g++ -c main.cpp -o main.o

3.Compile Object ไฟล์ ให้เชื่อมกันจะได้เป็นไฟล์ execute (ไว้ใช้รันโปรแกรม) ชื่อ main
g++ data.o main.o -o main

หากเขียนเป็น makefile จะได้ code เป็น
main: data.o main.o
        g++ data.o main.o -o main
data.o:
        g++ -c data.cpp -o data.o
main.o:
        g++ -c main.cpp -o main.o
clean:
        rm *.o main
แล้วใช้คำสั่ง make จะได้ไฟล์ main

ขอขอบคุณ อ.วรวิทย์ วีระพันธุ์ ที่ช่วยอธิบายให้นะครับ


ไม่มีความคิดเห็น:

แสดงความคิดเห็น