2016-03-25 22 views
2

を呼び出すことはできません。問題は、それがメインはpam_ *シンボルを見つけられないということである。はなぜ私のプログラムのリンクはpam_は*、私は次のように非常にシンプルでストレートフォワードCプログラムをコンパイルして構築しようとしている

ドイツ語のため申し訳ありません
[email protected]:~$ gcc -o checkpwd -lpam -lpam_misc checkpwd.c 
/tmp/ccjIBywU.o: In Funktion `main': 
checkpwd.c:(.text+0xcf): Nicht definierter Verweis auf `pam_start' 
checkpwd.c:(.text+0xe9): Nicht definierter Verweis auf `pam_authenticate' 
checkpwd.c:(.text+0x141): Nicht definierter Verweis auf `pam_end' 
collect2: error: ld returned 1 exit status 

、それは「行方不明の記号」のようなSTHを意味します。それが私の疑問です:なぜそれはシンボルを見つけることはありませんか?どのライブラリに含める必要がありますか?私はlibpam.aにNMを行うと、私はすべてのシンボルを見つけることができます:

[email protected]:~$ nm /usr/lib/x86_64-linux-gnu/libpam.a | grep pam_start 
      U _pam_start_timer 
    0000000000000010 T _pam_start_timer 
    0000000000001930 T _pam_start_handlers 
      U _pam_start_timer 
pam_start.o: 
    0000000000000000 T pam_start 
      U _pam_start_handlers 
[email protected]:~$ nm /usr/lib/x86_64-linux-gnu/libpam.a | grep pam_authenticate 
    0000000000000000 T pam_authenticate 

誰もがここで間違って起こっているのかを見ることができますか?

ありがとうございます。あなたがソースを入れて、ライブラリファイルの前にオブジェクトファイルをしなければならない

答えて

関連する問題