如何为32位嵌入式软件重新配置Google Test?

时间:2016-07-26 15:32:58

标签: linux ubuntu 32bit-64bit googletest

我已设法根据this.

安装Google Test

我的问题如下:我必须测试正在为使用32位操作系统的嵌入式软件开发的项目,所以我需要从64位重新配置Google Test。

使用旧的1.7.0版本,我们知道解决方案是:

autoreconf -fvi
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
make

这就是我现在尝试使用新版本的方式:

cd home/CWD/googletest/googlemock
autoreconf -fvi
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"

cd home/CWD/googletest/googletest
autoreconf -fvi
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"

cd ..
mkdir googletest_build
cd googletest_build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest ../googletest
make
make install

这样做了,因为我在其他地方找不到配置文件,但终端中显示的结果与1.7.0版本的重新配置相同。

但使用后:

make UTEST=yes project_Name

我明白了:

Linking... project_Name
GTEST_LDFLAGS=-L ../../googletest//lib/ -lpthread -lgtest -lgtest_main -lgmock -lstdc++!
/usr/bin/ld: skipping incompatible ../../googletest//lib//libgtest.a when searching for -lgtest
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../libgtest.a when searching for -lgtest
/usr/bin/ld: skipping incompatible //usr/lib/libgtest.a when searching for -lgtest
/usr/bin/ld: cannot find -lgtest
/usr/bin/ld: skipping incompatible ../../googletest//lib//libgtest_main.a when searching for -lgtest_main
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../libgtest_main.a when searching for -lgtest_main
/usr/bin/ld: skipping incompatible //usr/lib/libgtest_main.a when searching for -lgtest_main
/usr/bin/ld: cannot find -lgtest_main
/usr/bin/ld: skipping incompatible ../../googletest//lib//libgmock.a when searching for -lgmock
/usr/bin/ld: cannot find -lgmock
collect2: error: ld returned 1 exit status

项目env变量在makefile中设置为32位,因此不应该是问题。

查看我想的错误消息:这是我的gcc版本吗?

2 个答案:

答案 0 :(得分:3)

使用my answer that you have referred to构建32位googletest 只需遵循相同的程序,而不是运行:

cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest ../googletest

运行:

cmake -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest ../googletest

如果您在64位主机上进行32位googletest的个人安装 明确它是32位,例如,这是一个好主意。通过使用:

-DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest_32

答案 1 :(得分:2)

我们使用我们的应用程序本身构建谷歌测试。我们没有使用任何预构建库,我们只是在我们的构建工具链中包含所需的东西,就像Makefile中的这个片段一样:

include /opt/foreign_components/gmock-1.7.0/gmock.mk

OBJ_SERI_BASIC = \
        $(GMOCK_OBJ) \
        $(COMPONENT_HOME_SERI)/unittest/src/test_virtual.o \
        $(COMPONENT_HOME_SERI)/component/name_value_pair.o

并且gmock.mk包含:

GMOCK_PATH=$(HOME)/foreign_components/gmock-1.7.0

GMOCK_OBJ= \
       $(GMOCK_PATH)/fused-src/gmock_main.o \
       $(GMOCK_PATH)/fused-src/gmock-gtest-all.o

GMOCK_INCLUDE=\
          -I$(GMOCK_PATH)/fused-src/gmock/ \
          -I$(GMOCK_PATH)/fused-src

因此,构建的任何标志和更改也将影响测试框架。因此,我们使用不同的编译器,目标以及各种平台上的64位和32位来构建它。