menggunakan cross-compiling Valgrind


12

Saya telah mengunduh sumber-sumber dari batang Valgrind dan membangunnya untuk digunakan pada sistem Linux tertanam (Montavista Linux) yang ditenagai oleh ARM926 (arsitektur ARMv5t). Semuanya berjalan dengan baik sampai saya mencoba menjalankannya untuk memeriksa beberapa aplikasi yang saya buat; Valgrind memberitahuku:

"valgrind: gagal memulai alat 'memcheck' untuk platform 'arm-linux': Tidak ada file atau direktori"

Mencoba menjalankan alat lain memberikan pesan yang sama. Untuk make install saya menggunakan opsi --prefix yang menunjuk ke sistem file embedded system yang dipasang melalui NFS (misalnya --prefix = / home / NFS_mounted / opt / valgrind). Saya memeriksa lokasi instalasi dan direktori lib di sana berisi alat yang tepat; Saya juga memeriksa file pkgconfig yang sesuai untuk Valgrind dan tampaknya baik-baik saja jadi saya agak tidak mengerti sekarang dan tidak tahu apa yang salah. 2 pertanyaan:

  1. Apakah benar menggunakan / menginstal Valgrind yang dikompilasi silang seperti itu? Mungkin saya melakukan sesuatu yang salah mengenai pengaturan, atau mungkin ada sesuatu yang melibatkan sistem host yang saya lewatkan (seperti gdb / gdbserver).
  2. Adakah yang mencoba menjalankannya pada arsitektur ARM? Saya sadar bahwa dukungannya cukup baru jadi saya bertanya-tanya apakah saya bisa mendapatkan hasil yang layak.

Jawaban:


15

Jalankan perintah ini di perangkat target Anda

export VALGRIND_LIB=~/valgrind/lib/valgrind/

di mana ./valgrindjalur direktori diinstal (diberikan dalam ./configure)


4

Masalahnya adalah bahwa 'valgrind' sedang mencari executable yang berbeda untuk menjalankan pengecekan yang sebenarnya. Itu menggunakan jalur instal yang Anda tentukan ketika Anda mengkonfigurasinya, yang bukan jalur yang sama seperti pada target.

Anda harus dapat mengonfirmasi ini dengan membuat symlink / home / NFS_mount pada target Anda yang menunjuk ke '/'.


Bagaimana cara mencari jalan itu? Pkgconfig berisi jalur target yang benar, jadi dari mana ia mencoba mengambilnya?
celavek

Saya pikir itu dikompilasi masuk. Skrip ./configure menghasilkan file header config.h, yang harus berisi jalur awalan.
Kristof Provost

2

Masukkan VALGRIND_LIB direktori induk dari direktori amd64-linux. Misalnya:

export VALGRIND_LIB=/u/gallinar/downloaded/valgrind-3.2.3/.in_place

ini bekerja untuk saya hari ini :).


Saya kehilangan .in_placefoldernya.
ArmenB

0

VALGRIND_LIB perlu menunjuk ke folder yang memiliki alat memcheck dan lib yang dikompilasi x lainnya

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.