2012-11-04 31 views
10

Tôi đang ở dưới Ubuntu 12.04 x86 64 bit, tôi đã biên dịch phiên bản 32 bit của llvm/clang từ kho lưu trữ svn chính thức thành công.Clang không biên dịch mã cho các nền tảng khác ngoài x86

Tôi bây giờ cố gắng để biên dịch mã C++ cho ARM, vào thời điểm này tôi không quan tâm về các phiên bản nền tảng như armv5 vs armv7a, tôi đang tập trung vào cách thức chuyển đổi nền tảng làm việc cho clang:

llvm-config --targets-built 
ARM CellSPU CppBackend Hexagon Mips MBlaze MSP430 NVPTX PowerPC Sparc X86 XCore 

nhưng lệnh sau đây không hoạt động

clang++ -arch arm soft.cpp -o soft_ARM 

đầu ra là

clang-3: warning: argument unused during compilation: '-arch arm' 

Tôi cũng đã thử các biến thể giống như gcc hoặc các kết hợp khác như -arch=arm, -arch=armv7a, -march=armv5 nhưng không có gì có vẻ hoạt động.

Sau khi đọc một số tài liệu tôi nhận thấy rằng clang hoạt động cho ARM chỉ trong MAC OS X/Darwin và nó không phải làm việc cho ARM trong hệ điều hành khác.

Làm thế nào tôi có thể biên dịch cho ARM bằng tiếng kêu và đầu ra của llvm-config --targets-built thực sự là về cái gì?

+0

tôi vừa biên soạn một phiên bản 64 bit của clang và hành vi của nó luôn giống như trước đây. – user1797612

Trả lời

8

-arch là tính năng chỉ có darwin. Bạn nên sử dụng -target trên các nền tảng không darwin. Ngoài ra, biên dịch llvm/target xác định bộ ba đích hoặc tạo liên kết từ clang tới -clang. Trong trường hợp của bạn, bộ ba đích sẽ là arm-none-linux-gnueabi

+0

không hoạt động, 'clang-3: cảnh báo: đối số không được sử dụng trong quá trình biên dịch: '-target = arm-none-linux-gnueabi'' – user1797612

+0

Ồ, xin lỗi, nó phải là-target arm-none-linux-gnueabi –

+0

1 bước nhỏ chuyển tiếp nhưng nó không hoạt động '/ usr/bin/as: tùy chọn không được nhận ra '-mfloat-abi = softfp' clang-3: lỗi: lệnh lắp ráp thất bại với mã thoát 1 (sử dụng -v để xem lời gọi)' – user1797612

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