banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Sự khác nhau giữa make và make install  XML
  [Question]   Sự khác nhau giữa make và make install 27/07/2009 22:04:56 (+0700) | #1 | 187733
deuxliquid
Member

[Minus]    0    [Plus]
Joined: 10/07/2009 11:28:06
Messages: 24
Offline
[Profile] [PM]
Chào các bạn,
Mình đang cài đặt gtk và mình nhận thấy có hiện tượng như sau:
Khi mình thay đổi trong source của gtk (ví dụ chèn thêm một hàm vào trong gtkbutton.c) và dùng make để biên dịch thì rất lâu. Còn dùng make install thì rất nhanh mà gtk lại được cài đặt luôn.
Dường như lệnh make sẽ biên dịch từ a-z nên lâu còn make install chỉ biên dịch những chỗ thay đổi nên nhanh?
Mong nhận được ý kiến của các bạn!
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 27/07/2009 22:50:17 (+0700) | #2 | 187736
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

deuxliquid wrote:
Chào các bạn,
Mình đang cài đặt gtk và mình nhận thấy có hiện tượng như sau:
Khi mình thay đổi trong source của gtk (ví dụ chèn thêm một hàm vào trong gtkbutton.c) và dùng make để biên dịch thì rất lâu. Còn dùng make install thì rất nhanh mà gtk lại được cài đặt luôn.
Dường như lệnh make sẽ biên dịch từ a-z nên lâu còn make install chỉ biên dịch những chỗ thay đổi nên nhanh?
Mong nhận được ý kiến của các bạn! 


"make" là tạo binaries từ source. Không có "make" thì "make install" không cái gì để.. install cả.

--> đoạn này không đúng. Phải có "make" thì mới có cái để "make install" install.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 27/07/2009 23:12:01 (+0700) | #3 | 187739
autobots
Member

[Minus]    0    [Plus]
Joined: 22/12/2008 12:12:23
Messages: 7
Offline
[Profile] [PM]
theo mình hiểu khi compile 1 chương trình từ source thì:
- Bước 1: ./configure với các option để tạo ra Makefile (option thường dùng là --prefix để thay đổi đường dẫn cài đặt mặc định của chương trình)
file configure là một shell script được tạo bằng http://www.gnu.org/software/autoconf/
- Bước 2: make
bước này là giai đoạn chương trình make sẽ compile chương trình từ source sang binary dựa vào các thông tin trong Makefile. Sau bước này bạn đã có 1 gói binary có thể install được (giống như 1 folder chứa source của chương trình MS Office trong win vậy)
- Bước 3: make install
bước này bạn sẽ thật sự install chương trình này vào system (giống như bạn double click file setup.exe từ folder ms office bên trên)

em là newbie thôi nên có sai sót gì mong các anh chỉ giúp!
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 28/07/2009 01:29:13 (+0700) | #4 | 187762
deuxliquid
Member

[Minus]    0    [Plus]
Joined: 10/07/2009 11:28:06
Messages: 24
Offline
[Profile] [PM]
Rõ ràng là mọi tài liệu đều nói configure để tạo makefile, make để biên dịch và make install để cài đặt. Nhưng mình gặp một cao thủ trình diễn cho mình sự khác biệt giữa make và make install khi biên dịch gtk. Thường khi chỉnh sủa một tí trong mã nguồn của gtk thi phải make lại trước sau đó mới make install. Nhưng mà để make lại cái gtk nó tốn thời gian nên anh này gõ luôn make install vừa dịch lại vừa cài đặt luôn, rất nhanh. Không hiểu vì sao. Hỏi không nói.
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 28/07/2009 02:06:55 (+0700) | #5 | 187765
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
Mình cũng dùng *nix chưa lâu nhưng nghĩ thế này không biết đúng không ^^
configure dùng để
+ check xem hệ thống của bạn có đủ chương trình để buil không ?
+ kiểm tra lib có đủ không , có đủ hàm , kiểu dữ liệu trong lib không ?
+ kiểm tra header(.h) nếu là C
+ Sau đó sinh ra make file
make dùng makefile của configure dịch thử với cấu hình mà configure được [biên soạn]
make install copy các file chỉ định vào hệ thống trên máy bạn [khởi chạy cài đặt lên hệ thống]

Sở dĩ anh bạn của deuxliquid làm được vậy có lẽ đã mod ở file make để khi make file nó kiêm luôn công việc của make chăng

p/s: ở nhà mình cũng thử 1 lần make gtk đúng là nó lâu thật.Nhưng vẫn phải chịu , cho make xong rồi mới make install nó.

Conmale wrote:
--> đoạn này không đúng. Phải có "make" thì mới có cái để "make install" install. 


Cháu đọc 1 số tài liệu thấy họ nói rằng make có thể coi là 1 optional.Có đúng không ạ ?
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 28/07/2009 04:08:55 (+0700) | #6 | 187777
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

Ikut3 wrote:


Conmale wrote:
--> đoạn này không đúng. Phải có "make" thì mới có cái để "make install" install. 


Cháu đọc 1 số tài liệu thấy họ nói rằng make có thể coi là 1 optional.Có đúng không ạ ? 



Tùy cái "Makefile" có cái gì trong đó nữa. Tuy nhiên, nguyên tắc là phải "make" thì mới có cái để mà "install".
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 28/07/2009 07:36:03 (+0700) | #7 | 187791
[Avatar]
xmouse
Member

[Minus]    0    [Plus]
Joined: 09/01/2009 21:22:22
Messages: 10
Offline
[Profile] [PM]
Với GTK thì

make install = compile + install package.

Đây là do dependency targets trong Makefile.

Những source code package được build bằng Autotools thì đều như vậy. GTK cũng nằm trong số đó smilie

[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 28/07/2009 11:05:32 (+0700) | #8 | 187805
[Avatar]
huyente
Member

[Minus]    0    [Plus]
Joined: 15/07/2007 18:34:33
Messages: 22
Offline
[Profile] [PM]

xmouse wrote:
Với GTK thì

make install = compile + install package.

Đây là do dependency targets trong Makefile.

Những source code package được build bằng Autotools thì đều như vậy. GTK cũng nằm trong số đó smilie

 

Bạn nói rõ hơn về chỗ màu vàng được không, có ví dụ minh hoạ thì càng tốt. Cảm ơn bạn.
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 29/07/2009 06:56:21 (+0700) | #9 | 187919
[Avatar]
xmouse
Member

[Minus]    0    [Plus]
Joined: 09/01/2009 21:22:22
Messages: 10
Offline
[Profile] [PM]

huyente wrote:

xmouse wrote:
Với GTK thì

make install = compile + install package.

Đây là do dependency targets trong Makefile.

Những source code package được build bằng Autotools thì đều như vậy. GTK cũng nằm trong số đó smilie

 

Bạn nói rõ hơn về chỗ màu vàng được không, có ví dụ minh hoạ thì càng tốt. Cảm ơn bạn. 


chào bạn,

Để biết rõ chi tiết bạn có thể tham khảo thêm ở đây:

http://www.gnu.org/software/make/manual/make.html#Rules

smilie
[Up] [Print Copy]
  [Question]   Sự khác nhau giữa make và make install 30/07/2009 06:38:08 (+0700) | #10 | 188024
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Để rõ ràng, trước hết các bạn nên tham khảo manual của make
Code:
man make


Khi make được gọi, makefile sẽ được đọc và thực thi. Mặc định makefile sẽ có tên Makefile. Nếu bạn tạo makefile có tên khác thì cần thêm vào tham số -f <tên của makefile>

Trong makefile sẽ có các rules và dependencies. Khi gọi make <tên rule> thì rule đó sẽ được thực thi.
Ví dụ trong make file có rules:
Code:
clear: install del
install:
        gcc test.c -o test
del:
        rm test

Ở đây rule clear phụ thuộc 2 rules install del. Khi ta gọi make clear, 2 rules install del sẽ lần lượt được thực hiện trước khi thực hiện các lệnh của chính rule clear.

Còn khi gọi make (không có tham số) thì đơn giản Makefile sẽ được đọc rule đầu tiên của nó sẽ được thực hiện.

Kết luận:
+ Sự khác biệt đầu tiên giữa make make install chính là tham số "install", tham số này chỉ rõ rule "install" sẽ được thực hiện. Còn nếu không có tham số thì rule đầu tiên trong Makefile sẽ được thực hiện.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|