gpt4 book ai didi

gcc - 如何构建需要clock_gettime函数的Linux/OSX makefile

转载 作者:行者123 更新时间:2023-12-04 17:11:11 25 4
gpt4 key购买 nike

当我尝试在 Linux 中构建一个项目时,我得到了 Error: undefined symbol clock_gettime .所以我想我需要添加 -lrt到构建命令 (gcc)。但是,现在它不会在 OS X 中编译:ld: library not found for -lrt .我不知道这个函数在静态链接代码中被调用的确切位置,但它似乎在没有 librt 的 OS X 中工作得很好。链接的代码可能在 #if __APPLE__ 后面使用了替代方法或者其他的东西。

有什么方法可以指教gcc仅链接 librt如果需要,或者是否存在?如果没有,如何使用特定于操作系统的命令创建 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

最佳答案

你可以试试这个:

LFLAGS := -lpthread

OS := $(shell uname -s)
ifeq ($(OS),Linux)
LFLAGS += -lrt
endif

关于gcc - 如何构建需要clock_gettime函数的Linux/OSX makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com