Linux でプロジェクトをビルドしようとすると、Error: undefined symbol clock_gettime
. -lrt
そこで、ビルド コマンド (gcc)に追加する必要があることがわかりました。ただし、OS X: ではコンパイルされませんld: library not found for -lrt
。この関数が静的にリンクされたコードにあるため、どこで呼び出されているのか正確にはわかりませんが、librt がなくても OS X で問題なく動作しているようです。リンクされたコードは、おそらく代替の背後にあるものを使用してい#if __APPLE__
ます。
必要な場合、または存在する場合gcc
にのみリンクするように指示できる方法はありますか? librt
そうでない場合、OS 固有のコマンドで Makefile を作成するにはどうすればよいですか? 私はautoconfなどを使用していません。
Makefile はかなり複雑ですが、操作部分は次のとおりです。
CC := g++
# In this line, remove -lrt to compile on OS X
LFLAGS := -lpthread -lrt
CFLAGS := -c -Wall -Iboost_build -Ilibtorrent_build/include -Iinc
OBJDIR := obj
SRCDIR := src
SRC := $(wildcard $(SRCDIR)/*.cpp)
OBJS := $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRC))
# Note that libtorrent is built with a modified jamfile to place the
# libtorrent.a file in a consistent location; otherwise it ends up somewhere
# dependent on build environment.
all : $(OBJS) libtorrent_build boost_build
$(CC) -o exec $(LFLAGS) \
$(OBJS) \
libtorrent_build/bin/libtorrent.a \
boost_build/stage/lib/libboost_system.a