SORU
18 Mayıs 2010, Salı


Nasıl belirli bir abone olarak giriş bir sürüm için link alabilir miyim?

Ben Ubuntu Lucid 10.04 bilgisayarımda bir şey derlerken abone olarak giriş karşı bağlı olur. Lucid kullanan abone olarak giriş bu 2.11. Eski bir abone olarak giriş ile başka bir bilgisayarda bu ikili çalıştırdığınızda, komut abone olarak giriş yok diyerek başarısız 2.11...

Bildiğim kadarıyla abone olarak giriş sembol sürüm kullanır. Özel sembol bir sürümü karşı bağlamak için gcc zorlayabilir miyim?

Beton kullanımı kola için gcc çapraz bir araç zinciri derlemeye çalışıyorum.

CEVAP
18 Mayıs 2010, Salı


Abone olarak giriş sembol sürüm kullanır bu doğru. Eğer merak ediyorsanız, sembol sürüm oluşturma uygulaması abone olarak giriş 2.1 tanıtıldı here açıklanan ve Güneş sembolü sürüm oluşturma şeması here açıklanan bir uzantısıdır.

Bir seçeneği statik olarak senin ikili bağlantı. Bu muhtemelen en kolay seçenek.

Ayrıca, bir kök ortamı oluşturmak veya abone olarak giriş- . bir ile ikili oluşturabilirsin ^em>yeni=>abone olarak giriş-eskiçapraz derleyici.

http://www.trevorpounds.com blog yazısı göre Linking to Older Versioned Symbols (glibc), Olası herhangi bir sembol eski bir diğeri de aynı kullanarak geçerli olduğu sürece, karşı bağlı olduğu kuvvet.symverilk etapta sürüm bilgisi sembolleri tanımlamak için kullanılan pseudo-op. Aşağıdaki örnek blog post dan alınmıştır.

Aşağıdaki örnek abone olarak giriş bu realpath kullanır, ama eski bir sürüm 2.2.5 karşı bağlı olduğundan emin olur.

#include <limits.h>
#include <stdlib.h>
#include <stdio.h>

__asm__(".symver realpath,realpath@GLIBC_2.2.5");
int main()
{
    char* unresolved = "/lib64";
    char  resolved[PATH_MAX 1];

    if(!realpath(unresolved, resolved))
        { return 1; }

    printf("%s\n", resolved);

    return 0;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ryan Billy

    Ryan Billy

    30 EKİM 2006
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010