Tôi đang viết một ứng dụng có nhiều thư mục con. Tôi đã tạo một cấu trúc Makefile sao cho các thư mục con biên dịch tập tin và thực hiện "ar rvs" và "ranlib libxxx.a" để tạo lưu trữ vào thư mục cha để liên kết.Gcc trên OS X: Biểu tượng không xác định cho kiến trúc x86_64
Tuy nhiên, lệnh "ld" đang chạy vào sự cố sau.
ld: warning: ignoring file ./libxxx.a, file was built for archive which is not
the architecture being linked (x86_64):
./libxxx.a Undefined symbols for architecture x86_64:
Tôi đang sử dụng gcc trên Mac OS X 10.10.1
Tôi đọc nhiều bài viết về vấn đề này. Tôi cố gắng "gcc -arch i386", sau đó tôi gặp phải lỗi tương tự cho i386
Undefined symbols for architecture i386:
Tôi đã cài đặt gcc-4.9.2 và cố gắng sử dụng nó thay vì gcc mặc định, không có may mắn. Tôi đã thử sử dụng x86_64-apple-darwin14.0.0-g ++ - 4.9.2 và điều đó cũng không giúp được gì.
Cảm ơn bạn đã phản hồi. Tôi đã thử "CC = gcc -m64" và tôi cũng đã sử dụng gcc để chạy lệnh ld.But kết quả là như nhau. Tôi chỉ thử tùy chọn -m32 để xem nếu nó hoạt động nếu tôi làm cho nó phù hợp, nhưng không có lý do khác. – newprogrammer
Không ai có thể giúp bạn nhiều hơn trừ khi chúng ta thấy một makefile tối thiểu tái tạo vấn đề. Đọc về cách tạo một MCVE ([Làm thế nào để tạo ra một ví dụ tối thiểu, đầy đủ và có thể xác minh?] (Http://stackoverflow.com/help/mcve)) hoặc SSCCE ([Ví dụ ngắn, tự chứa, đúng] (http://sscce.org/)) - hai tên và liên kết cho cùng một ý tưởng. Mã MCVE của bạn có thể là một tệp nguồn tối thiểu (và tiêu đề) cho thư viện ('void libfunc (void) {printf ("% s được gọi là \ n ", __func__);}' và chương trình chính của bạn gọi hàm thư viện, cộng với một hoặc hai makefiles tùy thuộc vào cách mọi thứ được đặt ra –
Cảm ơn bạn. – newprogrammer