スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

vsftpd-2.0.6コンパイル

RHEL ES4 Update3の話。

コンパイルでエラーになる↓

# make
gcc -c main.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c utility.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c prelogin.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ftpcmdio.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c postlogin.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c privsock.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c tunables.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ftpdataio.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c secbuf.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ls.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c postprivparent.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c logging.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c str.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c netstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c strlist.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c banner.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c filestr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c parseconf.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c secutil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ascii.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c oneprocess.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c twoprocess.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c privops.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c standalone.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c hash.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c tcpwrap.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ipaddrparse.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c access.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c features.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c readwrite.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c opts.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ssl.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysutil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysdeputil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`
/lib/libpam.so.0: could not read symbols: 間違った形式のファイル
collect2: ld はステータス 1 で終了しました
make: *** [vsftpd] エラー 1

Makefileを見ると
LIBS = `./vsf_findlibs.sh`
とかなっており、vsf_findlibs.shで環境に合わせてLIBSを設定してるみたい。

どうもlibpamとかlibcapでつまずくらしい。

よく分からんが-lpamと-lcapをLIBSに入れとけばとりあえずいいような気がしたから
↓の変更。

【vsf_findlibs.sh】

if find_func pam_start sysdeputil.o; then
#locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0"; ← コメントアウト
#locate_library /usr/lib/libpam.so && echo "-lpam"; ← コメントアウト
echo "-lpam"; ← 追加
# HP-UX ends shared libraries with .sl


# Look for libcap (capabilities)
#locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1"; ← コメントアウト
#locate_library /usr/lib/libcap.so && echo "-lcap"; ← コメントアウト
echo "-lcap"; ← 追加

makeはOK。

# cp vsftpd /usr/sbin/.
でrpmパッケージのvsftpdと入れ替えてみたけど特に問題なし。
LDAPでの認証もうまくいってる。

ちなみにstandaloneでtcp wrapperを有効にしたい場合は
↓も変更してmake。

【builddefs.h】

#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

/* #undef VSF_BUILD_TCPWRAPPERS */ ← コメントアウト
#define VSF_BUILD_TCPWRAPPERS ← 追加
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */

この記事のトラックバックURL

http://ysmt.blog21.fc2.com/tb.php/204-d1c7bbe3

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。