我不得不在我的大学里用openMP做一个项目。为此,我使用brew下载了llvm,并用CC=/usr/local/opt/llvm/bin/clang替换了makefile中的cc = gcc。
现在看来,这是可行的,但我得到了一个意想不到的错误,ld: library not found for -lomp clang-11: error: linker command failed with exit code 1。
当我运行llvm-config --system-libs时,我得到:-lm -lz -lcurses -lxml2。
我在这个问题上是个完全的初学者,但我想我必须安装ld图书馆?有人能帮忙吗?
编辑:完整makefile
C=/usr/local/opt/llvm/bin/clang
CFLAGS = -O2 -fopenmp
LDFLAGS = -fopenmp
EXEC = bubble.run \
mergesort.run \
odd-even.run
HEADER_FILES = $(wildcard *.h)
RAND_INIT=0
ifeq ($(RAND_INIT), 1)
$(Initialization of the vector is random)
CONFIG_FLAGS += -DRINIT
endif
all: $(EXEC)
%.run: %.o utils.o
$(CC) $(LDFLAGS) -o $@ $^
%.o: %.c $(HEADER_FILES)
$(CC) -c $(CONFIG_FLAGS) $(CFLAGS) $< -o $@
clean:
rm -f $(EXEC) *.o *~
.PHONY: clean发布于 2021-03-10 19:00:40
在克雷格·埃斯蒂的评论中找到答案。下面是我在macOS上编译macOS的教程。
用brew install llvm
brew install libomp安装llvm
现在,clang和clang++正在调用llvm编译,OpenMP应该编译。但我就是在那里碰到了失踪联系的问题。
/usr/local/opt/libomp
find /usr/local -xdev -name '*libomp*'查找libomp的安装位置,可能是在现在,当您在makefile中编译/时,使用clang代替cc/gcc,并将LDFLAGS += -L <YOUR PATH TO LIBOMP>/libomp/lib和CFLAGS += -I/usr/local/opt/libomp/include添加到make文件中。编译现在应该可以工作了。
https://stackoverflow.com/questions/66556858
复制相似问题