- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在学习谷歌测试。我下载了 gtest,运行命令 ./configure
和 make
并以
$ sudo cp -a include/gtest /usr/include
$ sudo cp -a lib/.libs/* /usr/lib/
我从 here 得到了所有这些.我试着运行这段代码
#include <gtest/gtest.h>
TEST(MathTest, TwoPlusTwoEqualsFour) {
EXPECT_EQ(2 + 2, 4);
}
int main(int argc, char **argv) {
::testing::InitGoogleTest( &argc, argv );
return RUN_ALL_TESTS();
}
像这样
$ export GTEST_HOME=~/usr/gtest
$ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
$ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp
但是我收到一个错误
/usr/bin/ld: /tmp/ccVTj3Rk.o: undefined reference to symbol '_ZN7testing8internal9EqFailureEPKcS2_RKSsS4_b'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libgtest.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我是做错了什么还是错误?
最佳答案
您的设置有一些错误。
您将 include/gtest 复制到 /usr/include ( sudo cp -a include/gtest /usr/include
),但是当您尝试编译时,您告诉编译器查找 gtest header 在~/usr/gtest目录下,而不是在你之前设置的目录下(/usr/include/gtest)。 lib/.libs/* 文件也发生了同样的事情。您将它们复制到一个地方,然后在编译时在另一个地方请求它们。
保持以下配置:
$ sudo cp -a include/gtest /usr/include
$ sudo cp -a lib/.libs/* /usr/lib/
更改#include <gtest/gtest.h>
进入#include "gtest/gtest.h"
并尝试像这样编译:
g++ -g -Wall <your .cpp files> -I /usr/include/gtest/ -L /usr/lib/ -lgtest -lgtest_main -lpthread
在运行 ./a.out 文件(或您分配给可执行文件的任何名称)后,您应该会看到以下输出
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from MathTest
[ RUN ] MathTest.TwoPlusTwoEqualsFour
[ OK ] MathTest.TwoPlusTwoEqualsFour (0 ms)
[----------] 1 test from MathTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
关于c++ - 谷歌测试缺少 DSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232237/
我有一个 DSO(mylibrary.so.0 库),带有一个标记为 extern "C" 的 func1 函数,我'我确定它已导出,因为 nm -D mylibrary.so.0 | grep fu
user@pc ~/hiddensymbols % cat main.cpp __attribute__((visibility ("hidden"))) int f_b1(void){ return
我正在学习谷歌测试。我下载了 gtest,运行命令 ./configure 和 make 并以 结束 $ sudo cp -a include/gtest /usr/include $ sudo cp
这个问题在这里已经有了答案: libpthread.so.0: error adding symbols: DSO missing from command line (16 个答案) Linking
假设我正在创建共享对象库 libz.so,其中包含一个头文件(例如 stdio.h)。作为 libc 库一部分的 stdio.h 代码在系统中静态链接。动态链接器如何解析从 DSO 到静态链接的 li
我正在尝试在 linux 下编译 qt ffmpeg 包装器简单编码/解码示例 QTFFmpegWrapper source # Set list of required FFmpeg librari
我遇到了一个令人难以置信的链接器问题。我有两个动态 .so 库,一个定义了 gpr_log(称为 libgpr.so),另一个使用它(称为 libgrpc++.so). 我正在尝试像这样链接一个可执行
我在将某些共享库与 g++ 链接时遇到问题。它给了我一个警告,例如: hidden symbol XXX in YYY is referenced by DSO /usr/lib/... 我已经阅读了
我想构建一个 OpenSSL RSA 引擎,从 this existing source code file 开始这是英特尔实现的一种更快的方法。首先,我想构建这段代码,所以我使用这些命令: gcc
我在设置共享库的可见性时遇到问题。我想寻求帮助以解决我的问题,如下所述: 我有一堆源文件,我想将它们构建为共享库: +Base |_Parameter | |_Parameter.h | |_Para
我尝试使用我的 asr 插件运行 unimrcpserver v1.0,它运行良好(在 Windows 7 上),但是当我尝试在另一台计算机(Windows Server 2003)中运行它时,我收到
我有一个正在运行的服务器(正在将其转变为开发服务器,但首先需要一些东西),所以我们不想重新编译 php 来破坏任何东西。 在新服务器上,我们有 mysql.so 和 mysqli.so 的动态扩展我无
关于包含静态成员变量的 C++ 模板类以及从动态库或共享对象中导出它们的问题很多。但这一个更深一些:如果有多个共享对象,每个共享对象都有自己的一组实例化,但可能使用来自另一个共享对象的实例化,该怎么办
我有一个已经编译/链接的 DSO 文件,它导出了一些确实必须隐藏的函数。当我尝试将我的代码链接到该库时 - 它会选择那些不需要的符号而不是我自己的符号。我无权访问源代码,因此我无法重建二进制文件并为不
我正在尝试通过使用 Cmake 再次编译所有内容,将一个 c++ 项目从 Windows 转换为 Debian。 我不太习惯在 Linux 上工作,但我已经设法正确安装了所有东西。 这是错误: /us
我编译php7如下 ./configure --enable-bcmath --with-bz2 --enable-calendar --enable-exif --enable-dba --enab
我最近试图从第 3 方 DSO 中隐藏一些符号,并遇到了用于创建“过滤器 DSO”的“--filter”LD 选项。来自ld manpage ,我的印象是动态链接器只会考虑过滤器 DSO 的 dyns
我尝试从我的实验室编译一个项目,我使用 ccmake 对原始代码进行的唯一更改是: CMAKE_CXX_COMPILER /usr/bin/clang++ CMAKE_CXX_FLAGS -f
我正在针对我编写的共享库编译程序。该库又依赖于 Boost::program_options(以及其他库)。当我编译我的程序时,我当然需要提及我的库,但是我得到一个 DSO 错误: g++ ism_c
这实际上似乎是一个常见问题,我以为我找到了答案,但由于某种原因它不起作用。我有一个使用 GTK2 库的项目,在第一次编译和链接时,我收到错误“libgtk-x11-2.0.so.0:添加符号时出错:命
我是一名优秀的程序员,十分优秀!