未明确引用`dlsym’学习C艰难之路
发布时间:2020-12-16 09:47:57 所属栏目:百科 来源:网络整理
导读:当我尝试编译我的单元测试文件时,我得到’未定义的引用`dlsym’错误. 我在Unix系统上读到了(我在Ubuntu 12.04上)将-ldl添加到编译器中,但我尝试使用Zed的Shaw Makefile但仍然没有发生任何事情.这是代码: CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDE
当我尝试编译我的单元测试文件时,我得到’未定义的引用`dlsym’错误.
我在Unix系统上读到了(我在Ubuntu 12.04上)将-ldl添加到编译器中,但我尝试使用Zed的Shaw Makefile但仍然没有发生任何事情.这是代码: CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS) LIBS=-ldl $(OPTLIBS) PREFIX?=/usr/local SOURCES=$(wildcard src/**/*.c src/*.c) OBJECTS=$(patsubst %.c,%.o,$(SOURCES)) TEST_SRC=$(wildcard tests/*_tests.c) TESTS=$(patsubst %.c,%,$(TEST_SRC)) TARGET=build/libex29.a SO_TARGET=$(patsubst %.a,%.so,$(TARGET)) # The Target Build all: $(TARGET) $(SO_TARGET) tests dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS) dev: all $(TARGET): CFLAGS += -fPIC $(TARGET): build $(OBJECTS) ar rcs $@ $(OBJECTS) ranlib $@ $(SO_TARGET): $(TARGET) $(OBJECTS) $(CC) -shared -o $@ $(OBJECTS) build: @mkdir -p build @mkdir -p bin # The Unit Tests .PHONY: tests tests: CFLAGS += $(TARGET) tests: $(TESTS) sh ./tests/runtests.sh valgrind: VALGRIND="valgrind --log-file=/tmp/valgrind-%p.log" $(MAKE) # The Cleaner clean: rm -rf build $(OBJECTS) $(TESTS) rm -f tests/tests.log find . -name "*.gc*" -exec rm {} ; rm -rf `find . -name "*.dSYM" -print` # The Install install: all install -d $(DESTDIR)/$(PREFIX)/lib/ install $(TARGET) $(DESTDIR)/$(PREFIX)/lib/ 以及记录的错误: michal@ubuntu:~/Documents/projectsc/c-skeleton$make ar rcs build/libex29.a src/libex29.o ranlib build/libex29.a cc -shared -o build/libex29.so src/libex29.o cc -g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG -LIBS build/libex29.a tests/libex29_tests.c -o tests/libex29_tests tests/libex29_tests.c: In function ‘main’: tests/libex29_tests.c:66:1: warning: parameter ‘argc’ set but not used [-Wunused-but-set-parameter] /tmp/ccRX6ddf.o: In function `check_function': /home/michal/Documents/projectsc/c-skeleton/tests/libex29_tests.c:10: undefined reference to `dlsym' /home/michal/Documents/projectsc/c-skeleton/tests/libex29_tests.c:11: undefined reference to `dlerror' /tmp/ccRX6ddf.o: In function `test_dlopen': /home/michal/Documents/projectsc/c-skeleton/tests/libex29_tests.c:24: undefined reference to `dlopen' /tmp/ccRX6ddf.o: In function `test_dlclose': /home/michal/Documents/projectsc/c-skeleton/tests/libex29_tests.c:49: undefined reference to `dlclose' collect2: ld returned 1 exit status make: *** [tests/libex29_tests] Error 1 正如我所说,我试图将’-ldl-添加到CFLAGS,SO_TARGET变量,几乎所有的东西,根据我的分析,这可能是有帮助的,但这没有改变任何东西. 解决方法
看完这个问题后:
Library Linking
我将LIBS更改为LDLIBS,这对我有用. LDLIBS=-ldl $(OPTLIBS) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在C#中将UIntPtr对象转换为IntPtr?
- c – enable_shared_from_this Vs Direct Assignment
- postgresql – 返回给定表的动态列集的函数
- ruby-on-rails-3 – Rails3:避免使用Ancestry Gem选择n 1?
- Cocos2dx 3.4内存管理机制——autorelease
- grep的用法与正则表达式
- (C#)提高自定义getBetweenAll的速度
- 如何在dojox.grid.DataGrid中聚焦新添加的行的第一个单元格
- Flash builder 编译编译提示java heap space解决方法
- 使用JsonCPP解析JSON数据 C++