Bu, clang
'u ilk kez kullanıyorum. Ne bildirimler std kitaplığı başvuran clang gelen herhangi bir hata şuna benzer olmasıdır: clang gcc kitaplıklarını kullanıyor görünüyor
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/ostream:245:7:
^^^ ^^^ ^^^
Yani clang bağlantıları gibi görünüyor - ya da en azından içerir - gcc kütüphaneler.
Kullandığım komut: clang++ -c -Wall -Wextra -Werror -g test.cpp -o test.o
. (Programın bunu kanıtlamak için kasıtlı bir hatası vardı).
Bu nasıl olabilir? clang
'un kendi kitaplıklarını kullanmak için ne yapabilirim (gcc'yi değil)?
ek bilgiler:
Ben Ubuntu 14.04 makinede duyuyorum.
clang++ --version
Ubuntu clang version 3.5-1ubuntu1 (trunk) (based on LLVM 3.5)
Target: x86_64-pc-linux-gnu
Thread model: posix
g++ --version
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
Daha önce farklı versiyonlarını yüklü vardı apt-get
ile gcc
arasında (aynı anda, update-alternatives
onlara kullanılır). Şu anda sadece 4.8
(diğerlerini kaldırdım) var. O zaman bir şeyleri mahvedebilir miyim? Ben asla clang yüklemedim (sanırım Ubuntu ile varsayılan).
Açıklamak gerekirse: doğru programlar derlenip çalıştırılır. clang++
.
ilave testler: Ben gcc
tip is_trivially_constructible
gibi henüz uygulamaya ve kendi standart C++ 11 kütüphanesinden (https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html) içinde iostream
işlemleri kıpırdamadı olduğunu biliyoruz ve o çınlama tam c sahiptir ++ 11 uyumlu kütüphanesi yüzden bu test clang ile derlemek ve sadece glangin gcc kütüphanelerini kullandigini onaylayan gcc hatalarini aldim. Ben de c++1y
ile bir şey derleme olamaz Yani şu anda
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/iostream:39:
...
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/cstdio:120:11: error: no member named 'gets' in the global namespace
using ::gets;
~~^
:
Çok temel program
#include <iostream>
using namespace std;
int main() {
cout << "Yada Yada" << endl;
return 0;
}
++ clang içinde -std = C++ 1y ile derleme bu hatayı veriyor clang.
'libC++' yükleyemiyorum (bağımlılıklar ile ilgili bazı hatalar). 'LibC++ 1' yi kurdum (bu benim istediğim C++ 11 kütüphanesi gibi görünüyor). "-stdlib = libC++" ile derlediğimde "önemli hata" alıyorum: "iostream" dosyası bulunamadı ['. '-stdlib = libC++ 1 ile derlerim:' clang: error: argümanında geçersiz kütüphane adı '-stdlib = libC++ 1'. Herhangi bir fikir? Teşekkür ederim. Bu cevaba göre – bolov
http://stackoverflow.com/questions/20587228/clang-error-stddef-file-not-found Her iki simlinks'i de kontrol ettim ve her ikisi de doğru, ancak bağlantılı klasörlerde birkaç başlık var. ama standart başlıklar değil – bolov
Üzgünüm, Ubuntu hakkında fazla bir şey yok, ama Fedora altında libC++ 'yi kaynaktan oluşturmak çok kolaydı. (Komik bir bağlayıcı hatası aldım, ancak bu farklı bir soru ve zaten SE'de cevaplandırıldı). –