如何为 32 位嵌入式软件重新配置 Google 测试?
How to reconfigure Google Test for a 32-bit embedded software?
我已经根据
安装了 Google 测试
我的问题如下:我必须测试正在为具有 32 位操作系统的嵌入式软件开发的项目,因此我需要重新配置 Google 从 64 位测试。
对于旧的 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
项目环境变量在 makefile 中设置为 32 位,所以这应该不是问题所在。
看着报错信息我在想:是不是我的gcc版本?
使用 构建 32 位 googletest
只需遵循相同的程序,但不是 运行ning:
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
我们用我们的应用程序本身构建 google 测试。我们没有使用任何预构建库,我们只是将需要的东西包含在我们的构建工具链中,就像 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 位构建它。
我已经根据
我的问题如下:我必须测试正在为具有 32 位操作系统的嵌入式软件开发的项目,因此我需要重新配置 Google 从 64 位测试。
对于旧的 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
项目环境变量在 makefile 中设置为 32 位,所以这应该不是问题所在。
看着报错信息我在想:是不是我的gcc版本?
使用
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
我们用我们的应用程序本身构建 google 测试。我们没有使用任何预构建库,我们只是将需要的东西包含在我们的构建工具链中,就像 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 位构建它。