c – 链接对象和静态库
我很难搞清楚在执行链接时要传递给g的标志.基本上,我使用这些“标准”标志编译一些代码:
CXXFLAGS = -Wall -Wextra -Wconversion -pedantic -std=c++0x -O2 然后,我将生成的.o文件合并到几个静态库中,如下所示: libxxx.a: xxx1.o xxx2.o ... ar rcs $@ $^ libyyy.a: yyy1.o yyy2.o ... ar rcs $@ $^ ... 问题: >编译.o文件时,是否需要在CXXFLAGS中使用-static标志? 在创建静态库之后,我想将一些已编译的.o文件与其中一些库链接起来以构建可执行文件,因此我使用它: LINKER = g++ LIB_DIR = lib/linux SYSTEM_LIBS = -lgmp LDFLAGS = -Wall -L $(OUTPUT_DIR) -L $(LIB_DIR) $(SYSTEM_LIBS) $(LINKER) $^ $(LDFLAGS) -lsvm -lUtils -lKinderedSpirits -o $@ exe: $(LINKER) o1.o o2.o $(LDFLAGS) -lxxx -lyyy -lzzz -o $@ 问题: – 我应该在这里使用-static标志吗? 此外,在链接期间,它给出了关于来自GMP库的未定义引用的例外.据我所知,-lgmp被发送到链接器并且它被安装在系统上(我能够编译一个简单的hello world,它从命令行使用GMP)和libxxx.a libyyy.a libzzz.a是位于$(LIB_DIR).也许我应该提到在libxxx.a中使用GMP符号. 更新: 我设法修复了GMP符号的未定义引用.问题是由我放置库的顺序引起的.基本上,如指定的here,我需要在-lgmp之前引用依赖于GMP的库.无论如何,我仍在寻找上述3个问题的答案. 解决方法
问:我还应该在这里使用-static标志吗?
答:可能没必要.这个标志只是不可能在动态库中意外链接. 问:-Wall在这里有意义还是仅用于编译? 问:是否需要将任何其他“标准”标志传递给链接器,类似于编译器推荐的标志? 您是否遇到了任何您想要粘贴的特定错??误? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ORACLE STANDBY 修复ORA-19505问题记录
- ruby-on-rails – 注销后阻止后退操作
- c# – 如何阻止visual studio在设计器中打开我的
- 在Ruby中,`Float(…)`记录在哪里?
- postgresql – 可以通过localhost连接到postgres
- c# – 如何使用Swagger / ServiceStack指定Respo
- c – Linux下的segfault自重启程序
- ruby-on-rails – 任何推荐的Rails部署教程书?
- c# – 如何验证“日期和时间”字符串是否只有时间
- ruby-on-rails – acceptable_nested_attributes