Tôi cần gọi hàm từ một chương trình khác. Nếu chương trình khác là một thư viện, tôi chỉ đơn giản có thể sử dụng dlopen và dlsym để có được một xử lý cho các chức năng. Thật không may, các chương trình khác là một Unix thực thi, và xây dựng nó như là một thư viện không phải là một lựa chọn. Cố gắng dlopen() trên các thực thi cho thông báo lỗi này:Sử dụng dlopen() trên một tập tin thực thi
dlopen([...]/testprogram, 1): no suitable image found. Did find: [...]/testprogram: can't map
Đây không phải là đáng ngạc nhiên, như dlopen là có nghĩa là để sử dụng với các thư viện, không thực thi. Có cách nào để có được dlopen và dlsym để làm việc với thực thi? Nếu không, liệu có cách nào khác để đạt được điều tương tự không?
Như đã thảo luận ở đây: http://stackoverflow.com/questions/6617099/call-function-in-unrelated-executable-linux/6619977#6619977, câu trả lời này là sai cho thực thi PIE, đó là thực sự là một hình thức đặc biệt của thư viện được chia sẻ (và thậm chí có ET_DYN e_type). –