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
誰もがここで間違って起こっているのかを見ることができますか?
ありがとうございます。あなたがソースを入れて、ライブラリファイルの前にオブジェクトファイルをしなければならない
くそー、これは私に起こっていてはいけません。ご返信ありがとうございます。 – kaidentity