Điều bạn đang tìm kiếm là biên dịch tĩnh. Thực hiện biên soạn tĩnh bao gồm tất cả các thư viện vào thực thi chính nó, vì vậy bạn không cần phải lo lắng nhiều về chuỗi sự phụ thuộc vào một hệ thống cụ thể, phân phối, vv
Bạn có thể làm điều này với:
gcc -Wl,-Bstatic -llib1 -llib2 file.c
-Wl chuyển các cờ theo sau đến trình liên kết, -Bstatic yêu cầu nó liên kết tĩnh nếu có thể, và sau đó là lib1, lib2, là các lib bạn định liên kết.
Ngoài ra, hãy thử:
gcc -static-libgcc -static file.c
Việc lập vẫn sẽ cần phải phù hợp với kiến trúc của hệ thống không có đặc quyền. Và bạn cần phải có các thư viện tĩnh được cài đặt trên hệ thống biên dịch (lib.a)
Nếu biên soạn đúng cách, nó sẽ hiển thị "không phải là một động thực thi" khi bạn chạy:
ldd a.out
Nguồn
2013-04-27 00:17:54
Cảm ơn. Sẽ xác nhận sau khi tôi đã kiểm tra nó nhưng tôi nghĩ rằng đó là chính xác những gì tôi đã sau! – Hector
Ok, Bây giờ tôi nhận được điều này có vẻ lạ /usr/bin/ld: không thể tìm thấy -lgcc_s Tất cả những gì tôi đã thêm là những gì bạn đề xuất với -openssl sau – Hector
Thêm các cờ này: '-static-libgcc' và' -static-libstdC++ '(nếu sử dụng C++) –