我收到以下錯誤,當我試圖運行一個腳本,我只有執行權限:這是後我已經設置LD_PRELOAD
環境設置我的LD_PRELOAD LIB使得一些工藝生產裝載機錯誤
uname: symbol lookup error: /home/dumindara/random/sotest/a.out: undefined symbol: dlsym
變量爲/home/dumindara/random/sotest/a.out
。
a.out
已測試malloc
函數,並在內部調用dlsym
。
運行時我沒有遇到這個問題ls
。大多數進程確實會出現此錯誤。爲什麼會發生這種情況,我能做些什麼才能使其發揮作用?
這是一般的好只能爲a.out設置LD_PRELOAD,而不是修改shell環境。在大多數UNIX shell中,你可以輸入:`LD_PRELOAD = xyz。/ a.out`。否則,請嘗試`(LD_PRELOAD = xyz; ./a.out)`。 – 2010-12-08 08:08:59
@Tony:我認爲a.out在這種情況下是一個共享對象,儘管它的名字很不恰當。 OP顯然試圖用自己的版本覆蓋`malloc()`,然後傳遞給真正的malloc。 – thkala 2010-12-08 08:25:13
@tkhala:啊,很好的接受......會更像`LD_PRELOAD = \`pwd \`/a.out program_to_test`那麼...... – 2010-12-08 08:52:39