2012-04-03 31 views
7

Tôi đã theo chương trình đơn giản:biểu tượng Không xác định "bắt đầu", trong khi liên kết chương trình D qua LD

import std.stdio; 

int main(string[] argv) { 
    writeln("Hello, world!"); 

    return 0; 
} 

Tôi đang xây dựng nó như sau:

DMD -c -m64 -od/proj/out -w -wi -fPIC -debug \ 
    -g -I/proj/hello -unittest /proj/hello.d 

LD -L/usr/share/dmd/lib/ -arch x86_64 -execute -macosx_version_min 10.7 \ 
    -pie -lm -lpthread -lphobos2 -o /proj/out/hello_app /proj/out/hello.o 

Compilation đi một cách hoàn hảo, nhưng liên kết với stucks như sau:

Undefined symbols for architecture x86_64: 
    "start", referenced from: 
    -u command line option 
    (maybe you meant: _D3std9algorithm41__T10startsWithVAyaa6_61203d3d2062TAhTAhZ10startsWithFAhAhZb, _D4core6thread6Thread5startMFZv , _D3std9algorithm91__T10startsWithVAyaa11_62203c20612e74696d6554TAS3std8datetime13PosixTimeZone10TransitionTlZ10startsWithFAS3std8datetime13PosixTimeZone10TransitionlZb , _D3std9algorithm43__T10startsWithVAyaa6_61203d3d2062TAyaTAyaZ10startsWithFAyaAyaZb , _D3std9algorithm41__T10startsWithVAyaa6_61203d3d2062TAxaTaZ10startsWithFAxaaZb , _D3std9algorithm92__T10startsWithVAyaa11_62203c20612e74696d6554TAS3std8datetime13PosixTimeZone10LeapSecondTylZ10startsWithFAS3std8datetime13PosixTimeZone10LeapSecondylZb , _D3std9algorithm92__T10startsWithVAyaa11_62203c20612e74696d6554TAS3std8datetime13PosixTimeZone10TransitionTylZ10startsWithFAS3std8datetime13PosixTimeZone10TransitionylZb) 
ld: symbol(s) not found for architecture x86_64 

Tôi đoán tôi đã quên một số thư viện tĩnh bổ sung để liên kết với nó để thiết lập mọi thứ g, nhưng chính xác thì sao?

Ngoài ra tôi đã thấy hướng dẫn về cách thực hiện biên dịch riêng lẻ và liên kết ở đâu đó trên trang web dlang, nhưng không thể tìm thấy nó.

UPD1: Khi liên kết với sự trợ giúp của GCC sử dụng gcc -L/usr/share/dmd/lib/ -lphobos2 -lm -lpthread hello.o, nó hoạt động, nhưng tôi cần sử dụng ld.

Trả lời

6

Thêm -lcrt1.o khi liên kết.

LD -L/usr/share/dmd/lib/ -arch x86_64 -execute -macosx_version_min 10.7 \ 
    -pie -lm -lpthread -lphobos2 -lcrt1.o -o /proj/out/hello_app /proj/out/hello.o 

[cập nhật] Ah, bạn đã nhận nó:)

1

Tìm thấy nó do may mắn!

Nó phải được liên kết với -lphobos2 -lm -lpthread-lcrt1.o - sau đó mọi thứ liên kết và hoạt động tốt.

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