2010-09-27 34 views
36

Khi tôi cố gắng xây dựng các chương trình sau đây:ld: thư viện không tìm thấy cho -lcrt0.o trên OSX 10,6 với gcc/kêu vang cờ -static

#include <stdio.h> 

int main(void) 
{ 
    printf("hello world\n"); 
    return 0; 
} 

Trên OS X 10.6.4, với những lá cờ sau :

gcc -static -o blah blah.c 

nó trả về này:

ld: library not found for -lcrt0.o 
collect2: ld returned 1 exit status 

đã có người khác gặp phải điều này, hoặc là nó một cái gì đó mà không ai khác đã bị ảnh hưởng với chưa? Mọi bản sửa lỗi?

Cảm ơn

Trả lời

46

Điều này sẽ không hoạt động. Từ trang man cho gcc:

Lựa chọn này sẽ không hoạt động trên Mac OS X trừ khi tất cả các thư viện (bao gồm cả libgcc.a) cũng đã được biên soạn với -static. Vì không có phiên bản tĩnh của libSystem.dylib và crt0.o được cung cấp, tùy chọn này không hữu ích cho hầu hết mọi người.

+0

Cảm ơn. Nó hữu ích cho tôi hoàn toàn bởi vì tôi quan tâm đến kỹ thuật đảo ngược: P – browneye

+1

@browneye - bạn có thể tìm ra cách để đảo ngược kỹ sư trên mac mà không cần tĩnh? – triple

0

Bạn cũng có thể thử LLVM LLD mối liên kết - Tôi đã làm phiên bản dựng sẵn cho hai hệ điều hành chính của tôi - https://github.com/VerKnowSys/Sofin-llds

một này cho phép tôi để liên kết cho exmple: "Qemu" đúng - đó là bất khả thi với ld cài đặt sẵn bởi Táo.

Và cuối cùng là - xây dựng GCC với libstdC++ (không).

+0

Cũng đáng nói đến - nó có thể yêu cầu LLVM 3.9 chính nó với biên dịch libC++ - để hỗ trợ "-static -lC++" được truyền cho trình liên kết. – dmilith

Các vấn đề liên quan