2012-02-07 21 views
5

LLVM, 2 araç llvm-link ve llvm-ld sağlar. Bilmek isterim:Nasıl llvm linker kullanılır?

  • Tüm .o dosyalarını bir arada nasıl birleştirirsiniz?

  • gcc -Wl, -soname, libsomething.so.1 ile nasıl bir soname ayarlamak?

komut satırından i ++ c yapmak nasıl bulundu olacaktır emin nasıl bana göstermek C++ ama eğer bunu istiyoruz.

sayesinde

+0

Tam olarak ne yapmaya çalışıyorsunuz? Nesne dosyaları veya LLVM bit kodu dosyaları? Bir .so oluşturun –

cevap

9
  • llvm-link başka LLVM IR dosyasına (~ birleştirme) LLVM IR dosyalarını bağlamak için bir araçtır.
  • llvm-ldld ile uyumlu olmaya çalışır. LLVM'nin şu anda gerçek bir bağlantı yeteneğine sahip olmadığını unutmayın, bu nedenle llvm-ld, gerçek son aşamaları yapmak için gcc'u çağırır. Eğer gcc yaptığınız gibi

    clang -c file.c -fpic 
    clang -shared file.o -o file.so 
    

    Ayrıca clang için -Wl bayrakları geçebilir:

    clang -shared file.o -Wl,-soname,libfile.so.8 -o file.so 
    
    sadece GCC en özelliğe sahip istiyorsanız, çınlama sürücüsünü kullandığını

Not

+2

Buna eklemek için, lütfen doğrudan llvm-ld kullanmayın. Heck, lütfen tam olarak ne yaptığınızı bilmedikçe ve sizin için bir derleyici şoförünüz bulunmadığı sürece hiçbir bağlayıcıyı doğrudan kullanmayın. – echristo

+3

Sadece bir ipucu, Mac üzerinde, '-shared .... -Wl, -soname, libxxxxx' kısmını değiştirmek için '-dynamiclib' kullanın – clsung

+0

@clsung teşekkür ederim! – Cfr