1

sudo ln -s /usr/lib64/libm.so /libとで解決ln -s /usr/lib64/libpthread.so /lib

libm.so は次のディレクトリにあります: /usr/lib64/libm.so libpthread は次のディレクトリにあります: /usr/lib64/libpthread.so

試しln -s /usr/lib/libthread.so /lib64/libpthread.soてみたところ、同じエラーが表示されます。マシンには再起動が必要ですか?

Centos 6.3 を使用して C でクライアント OPENDMTP を作成する際に問題が発生しています

私のソースファイル: https://sourceforge.net/projects/opendmtp/files/client-c/1.2.3/

インストールしました: yum groupinstall "Development Tools"

必要なライブラリをインストールしようとしましたが、既にインストールされています。

しようとしている:"make dest=linux dmtp" 私は次を得る:

[root@localhost OpenDMTP_client-c_1.2.0]# make dest=linux dmtp

Make tools dirs ...
/bin/mkdir -p ./build_lin/obj
/bin/mkdir -p ./build_lin/obj/tools
/bin/mkdir -p ./build_lin/obj/lib


Make './build_lin/obj/lib/libtools.a' ...
ar rc ./build_lin/obj/lib/libtools.a ./build_lin/obj/tools/checksum.o ./build_lin/obj/tools/base64.o ./build_lin/obj/tools/bintools.o ./build_lin/obj/tools/buffer.o ./build_lin/obj/tools/gpstools.o ./build_lin/obj/tools/strtools.o ./build_lin/obj/tools/utctools.o ./build_lin/obj/tools/threads.o ./build_lin/obj/tools/sockets.o ./build_lin/obj/tools/io.o ./build_lin/obj/tools/comport.o ./build_lin/obj/tools/random.o
ranlib ./build_lin/obj/lib/libtools.a

Make module dirs ...
/bin/mkdir -p ./build_lin/obj
/bin/mkdir -p ./build_lin/obj/modules
/bin/mkdir -p ./build_lin/obj/lib


Make './build_lin/obj/lib/libmodule.a' ...
ar rc ./build_lin/obj/lib/libmodule.a ./build_lin/obj/modules/odometer.o ./build_lin/obj/modules/motion.o ./build_lin/obj/modules/geozone.o
ranlib ./build_lin/obj/lib/libmodule.a

Make base dirs ...
/bin/mkdir -p ./build_lin/obj
/bin/mkdir -p ./build_lin/obj/base
/bin/mkdir -p ./build_lin/obj/lib


Make './build_lin/obj/lib/libbase.a' ...
ar rc ./build_lin/obj/lib/libbase.a ./build_lin/obj/base/mainloop.o ./build_lin/obj/base/propman.o ./build_lin/obj/base/event.o ./build_lin/obj/base/events.o ./build_lin/obj/base/packet.o ./build_lin/obj/base/pqueue.o ./build_lin/obj/base/protocol.o ./build_lin/obj/base/accting.o ./build_lin/obj/base/upload.o
ranlib ./build_lin/obj/lib/libbase.a
make dest=linux XPORT_MEDIA=-DTRANSPORT_MEDIA_SOCKET -f src/custom/custom.mk dmtpd_all
make[1]: Entering directory `/home/centos/Downloads/OpenDMTP_client-c_1.2.0'

Making sample DMTP reference implementation ...

Make dmtp object dirs ...
/bin/mkdir -p ./build_lin/obj/custom
/bin/mkdir -p ./build_lin/obj/custom/linux
/bin/mkdir -p ./build_lin/obj/custom/modules
/bin/mkdir -p ./build_lin/obj/dmtp


Linking 'dmtpd' ...
cc -o ./build_lin/obj/dmtp/dmtpd -Wall -DTARGET_LINUX -DTRANSPORT_MEDIA_SOCKET -DPROTOCOL_THREAD -DGPS_THREAD -Isrc /usr/lib/libpthread.so /usr/lib/libm.so ./build_lin/obj/custom/startup.o ./build_lin/obj/custom/transport.o ./build_lin/obj/custom/log.o ./build_lin/obj/custom/gps.o ./build_lin/obj/custom/gpsmods.o ./build_lin/obj/custom/linux/os.o -L./build_lin/obj/lib -lmodule -lbase -ltools
cc: /usr/lib/libpthread.so: No such file or directory
cc: /usr/lib/libm.so: No such file or directory
make[1]: *** [dmtpd_exe] Error 1
make[1]: Leaving directory `/home/centos/Downloads/OpenDMTP_client-c_1.2.0'
make: *** [dmtp_socket] Error 2
4

1 に答える 1

0

リンク先のアーカイブから、/OpenDMTP_client-c_1.2.3/make/common.mk の 54 行目に表示されます。

 SOLIBS    = $(LINUX_LIBS)/libpthread.so $(LINUX_LIBS)/libm.so

これは、Linux でこれらのライブラリを提供する奇妙な方法であり、機能しない可能性があります。それらは特別なシステム ライブラリであり、そのような予測可能な場所には存在しません。それらを指定する通常の方法は、-lm および -pthread (l なし) を使用することです。

簡単なハックとして、/OpenDMTP_client-c_1.2.3/make/common.mk ハックを編集し、54 行目を次のように置き換えます。

 SOLIBS    =

82 行目を次のように変更します。

 ALIBS       = -L$(LIB_DIR) -lmodule -lbase -ltools -lm -pthread

問題を解決する必要があります。他のプラットフォームへの影響はわかりませんが。

于 2013-07-09T23:21:19.623 に答える