2009-08-06 11 views
7

Tôi biết cách sử dụng g ++ và tất cả để biên dịch chương trình C++. Câu hỏi của tôi là, nếu tôi có một số mã phụ thuộc vào các thư viện khác nhau, làm thế nào tôi có thể biên dịch nó thành một tệp thực thi đơn giản mà tôi có thể gửi cho bất kỳ ai. Đối với điều này tôi sẽ được hạnh phúc với chỉ cần giữ nó trên os x.biên dịch C++ thành chương trình "thực"

Tôi muốn biết cách biên dịch chương trình "thực" không chỉ là tệp thực thi mà tôi có thể chạy cục bộ. Tôi đã thử googling này nhưng không tìm thấy nhiều.

Tôi có phải sử dụng phần mềm cài đặt không? Tôi biết trong các cửa sổ bạn có thể thực hiện một số công cụ .exe đơn giản sử dụng các tệp DLL phổ biến.

+0

Tôi không biết tại sao một người nào đó đã bỏ qua câu hỏi này. Tôi đã upvoted nó trở lại mặc dù. Có vẻ như một câu hỏi rất hợp lệ. – Aamir

+5

Thẻ "os" và "x" không hợp nhất với "osx" một cách kỳ diệu. Cũng giống như "The" "Rapist" không kỳ diệu đoàn kết để trở thành một nhà trị liệu. – Thomas

+0

+1 Người nổi tiếng Jeopardy! –

Trả lời

8

Bạn đang tìm kiếm "liên kết tĩnh". Điều đó sẽ nhập tất cả mã cần thiết từ thư viện vào tệp thi hành của bạn. Lưu ý tệp thực thi sẽ lớn hơn. Nếu bạn đang sử dụng thư viện chuẩn, chúng phải có mặt trên cài đặt hệ điều hành chuẩn.

Bạn nên thử cờ "-static" của g ++. Chạy "ldd your_executable_name" sẽ hiển thị tất cả thư viện mà bạn sử dụng thực thi (được liên kết động).

+2

trên os x ldd = otool -L thực thi, nếu có ai quan tâm – Ori

0

Bạn có thể sử dụng tùy chọn -static hoặc -s cho liên kết tĩnh trong gcc hoặc g ++

3

Vì bạn đang nói về Mac OS X, bạn có thể muốn thực hiện một bó. Phần mềm Qt có deployment guide rất hữu ích để bắt đầu với loại hoạt động này.