看板 LinuxDev 關於我們 聯絡資訊
各位好 我在編譯一個給tcl 用的extension 遇到getopt 這個function的問題 再多次呼叫getopt後 snmp_set -v1 -cpublic 10.10.160.10 \ docsIf3CmtsSignalQualityExtExpectedRxSignalPower.5000092 i -50 最後一個參數 "-50" 會被當成是一個參數,出現錯誤訊息 invalid option -- '5' 試過幾個方法 1. 第二次使用getopt時 設定optind = 0 這樣反而過了 2. 由於1.的方式很怪,所以在getopt.c裡加了一堆printf想看哪邊出錯 但是執行後完全沒東西輸出,似乎不是連結到我改的那一隻程式 用readelf -s 讀檔會顯示 435: 000000000003bce0 711 FUNC GLOBAL DEFAULT 11 getopt 如果編譯時刻意排除getopt.o則結果是 109: 0000000000000000 0 FUNC GLOBAL DEFAULT UND getopt@GLIBC_2.2.5 (2) 3.由於2.的結果我懷疑是我編譯參數不對,最後直接把getopt另取名子都改成mgetopt 用同樣的檔案和參數重新編譯,這次就真的是呼叫我改過的mgetopt,而且初始化時 optind=1 可以得到期望值 這時readelf -s 的結果是 108: 0000000000000000 0 FUNC GLOBAL DEFAULT UND getopt@GLIBC_2.2.5 (2) 1058: 000000000003bd30 711 FUNC GLOBAL DEFAULT 11 mgetopt 請問有肥有方法可以看出我到底連結到哪裡去了,或是有其他方式可以debug 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.248.25 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1408463761.A.AFA.html
spoil95732: LL 10/10 15:50