Tôi đang học ngôn ngữ Mục tiêu-C. Vì tôi không có máy Mac, tôi đang biên dịch và chạy mã của mình trong nền tảng Ubuntu 11.04.Các vấn đề khi biên dịch Mục tiêu C với Clang (Ubuntu)
Cho đến bây giờ, tôi đã sử dụng gcc để biên dịch. Tôi đã cài đặt GNUStep và tất cả đều hoạt động. Nhưng sau đó tôi bắt đầu thử một số tính năng Objective-C 2.0, như @property và @synthesize, mà gcc không cho phép.
Vì vậy, tôi đã cố gắng biên dịch mã bằng Clang, nhưng có vẻ như nó không liên kết chính xác mã của tôi với các thư viện GNUStep, ngay cả với chương trình Hello world đơn giản.
Ví dụ, nếu tôi biên dịch đoạn mã sau:
#import <Foundation/Foundation.h>
int main(void) {
NSLog(@"Hello world!");
return 0;
}
Đầu ra của trình biên dịch là:
/tmp/cc-dHZIp1.o: In function `main':
test.m:(.text+0x1f): undefined reference to `NSLog'
/tmp/cc-dHZIp1.o: In function `.objc_load_function':
test.m:(.text+0x3c): undefined reference to `__objc_exec_class'
collect2: ld returned 1 exit status
clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Lệnh Tôi đang sử dụng để biên dịch là
clang -I /usr/include/GNUstep/ test.m -o test
với chỉ thị -I để bao gồm các thư viện GNUStep (nếu không, Clang không thể tìm thấy Foundation.h).
Tôi đã giải quyết được sự cố của mình và truy cập cả hai trang web GNUStep và Clang, nhưng tôi chưa tìm thấy giải pháp cho nó. Vì vậy, bất kỳ trợ giúp sẽ được đánh giá cao.
Cảm ơn!
Xin chào URLArenzo.Tôi đã cài đặt gói đó rồi thử dùng gcc để biên dịch (nó hoạt động hoàn hảo). Tuy nhiên, tôi đã tìm ra rằng gcc không cho phép một số tính năng của Objective-C 2.0; vì vậy tôi đang cố gắng để làm cho mọi thứ chạy với trình biên dịch Clang. –