Ketika saya mengkompilasi file sumber yang sangat sederhana dengan gcc saya tidak perlu menentukan path ke file include standar seperti stdio atau stdlib.
Bagaimana GCC tahu cara menemukan file-file ini?
Apakah ada /usr/include
path bawaan di dalam, atau akan mendapatkan path dari komponen OS lainnya?
cpp -v /dev/null -o /dev/null
Ada perintah dengan output yang lebih pendek, yang memungkinkan untuk secara otomatis memotong jalur include dari garis, dimulai dengan satu spasi:
Kredit jatuh ke halaman depan libc ++ .
sumber
Meskipun saya setuju dengan jawaban Ihor Kaharlichenko untuk mempertimbangkan C ++ dan dengan jawaban luar biasa.7 untuk kekompakan outputnya, mereka masih tidak lengkap untuk versi multi-lengkungan gcc karena pemrosesan input tergantung pada parameter baris perintah dan makro.
Contoh:
echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -specs=nano.specs -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=soft -x c++ -E -Wp,-v\ - -fsyntax-only
hasil panensedangkan
echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -x c++ -E -Wp,-v - -fsyntax-only
hasilMantan doa memanfaatkan
newlib
(lihat baris 1 dan 3 dari output), yang terakhir pergi dengan standar termasuk. File umum di akhir daftar adalah contoh untuk penggunaaninclude_next
.Intinya: Selalu pertimbangkan semua opsi makro dan kompiler saat mencetak direktori include.
sumber
Jalankan saja yang berikut untuk mendaftar jalur pencarian default:
sumber
cc1
biasanya tidak dapat dipanggil secara langsung karena ini adalah perintah internal yang tidak ada di PATH. Mungkin Anda ingin mengedit jawaban Anda untuk menjelaskan di mana menemukan file.