sử dụng Valgrind được biên dịch chéo


12

Tôi đã tải xuống các nguồn từ trung kế Valgrind và xây dựng nó để sử dụng trên hệ thống nhúng Linux (Montavista Linux) được cung cấp bởi ARM926 (kiến trúc ARMv5t). Mọi thứ diễn ra tốt đẹp cho đến khi tôi cố chạy nó để kiểm tra một số ứng dụng tôi đã thực hiện; Valgrind nói với tôi:

"valgrind: không thể khởi động công cụ 'memcheck' cho nền tảng 'arm-linux': Không có tệp hoặc thư mục như vậy".

Cố gắng chạy bất kỳ công cụ khác cho cùng một thông điệp. Để thực hiện cài đặt, tôi đã sử dụng tùy chọn --prefix trỏ đến hệ thống tệp của hệ thống nhúng được gắn thông qua NFS (ví dụ: --prefix = / home / NFS_mounted / opt / valgrind). Tôi đã kiểm tra vị trí cài đặt và thư mục lib có chứa các công cụ thích hợp; Tôi cũng đã kiểm tra tệp pkgconfig tương ứng cho Valgrind và nó có vẻ ổn vì vậy hiện tại tôi không biết gì và không thể hiểu được chuyện gì đang xảy ra. 2 câu hỏi:

  1. Có đúng không khi sử dụng / cài đặt Valgrind được biên dịch chéo như vậy? Có thể tôi đang làm gì đó sai về thiết lập hoặc có thể có điều gì đó liên quan đến hệ thống máy chủ mà tôi đang thiếu (gdb / gdbserver như).
  2. Có ai đã thử chạy nó trên kiến ​​trúc ARM chưa? Tôi biết rằng sự hỗ trợ khá gần đây nên tôi tự hỏi liệu tôi có thể nhận được kết quả tốt hay không.

Câu trả lời:


15

Chạy lệnh này trong thiết bị mục tiêu của bạn

export VALGRIND_LIB=~/valgrind/lib/valgrind/

nơi ./valgrindđường dẫn thư mục được cài đặt (được đưa ra trong ./configure)


4

Vấn đề là 'valgrind' đang tìm kiếm một tệp thực thi khác để chạy kiểm tra thực sự. Nó sử dụng đường dẫn cài đặt mà bạn đã chỉ định khi bạn định cấu hình nó, đây không phải là đường dẫn giống như trên mục tiêu.

Bạn sẽ có thể xác nhận điều này bằng cách tạo liên kết tượng trưng / home / NFS_mounted trên mục tiêu của bạn trỏ đến '/'.


Làm thế nào để nó tìm kiếm con đường đó? Pkgconfig chứa đường dẫn đích chính xác, vậy nó sẽ lấy nó từ đâu?
celavek

Tôi nghĩ rằng nó đã được biên dịch. Tập lệnh ./có thể tạo tệp tiêu đề config.h, chứa đường dẫn tiền tố.
Kristof Provost

2

Đặt trong VALGRIND_LIB thư mục mẹ của thư mục amd64-linux. Ví dụ:

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

nó làm việc cho tôi hôm nay :).


Tôi đang thiếu .in_placetrong thư mục.
ArmenB

0

VALGRIND_LIB cần được trỏ đến thư mục có công cụ memcheck và các lib được biên dịch x phụ thuộc khác

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.