Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t将boost库与cmake静态链接_Boost_Cmake - Fatal编程技术网

Can';t将boost库与cmake静态链接

Can';t将boost库与cmake静态链接,boost,cmake,Boost,Cmake,我已经建立了boost signals library,它由以下内容构建: ./b2 address-model=32 link=static --build-type=complete --with-signals --layout=tagged 简单代码: #include <iostream> #include "boost/signal.hpp" void onSignal() { std::cout << "Hello from slot" <<

我已经建立了boost signals library,它由以下内容构建:

./b2 address-model=32 link=static --build-type=complete --with-signals --layout=tagged
简单代码:

#include <iostream>
#include "boost/signal.hpp"

void onSignal() {
 std::cout << "Hello from slot" << std::endl;
}

int main() {
  boost::signal<void()> sig;
  sig.connect(&onSignal);
  sig();
 return 0;
}
它构建时没有错误,但在运行时,我得到:

bash: ./test: No such file or directory
看起来,cmake产生的是动态链接,而不是静态链接:

koshchiy@koshchiy-lin-NB:~/dev/projects/test/test-build-release$ ldd test
linux-gate.so.1 =>  (0xf778b000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf768e000)
libc.so.6 => /lib32/libc.so.6 (0xf74e7000)
libm.so.6 => /lib32/libm.so.6 (0xf74bc000)
/usr/lib/libc.so.1 => /lib/ld-linux.so.2 (0xf778c000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf749e000)
没有cmake的建筑似乎还可以:

g++ -static main.cpp -o test -I... -l...

我使用的是Ubuntu12.04 x64和g++-4.7编译器。

您的手动构建没有使用CMAKE_CXX_标志中的CMakeLists.txt中使用的
-m32
标志

因此,使用cmake生成的结果是一个32位可执行文件,即使该文件存在,也无法使用“无此类文件”,因为您的系统缺少对32位的二进制支持

请删除cmakfiles.txt的
-m32
,或者尝试为您的系统和gcc版本安装gcc multilib支持

如果您想强制静态链接到您的cmake生成,请检查是否可以帮助您。

如果您在执行时得到“没有这样的文件或目录”。/test我相信您的路径错误,或者它没有生成。~/dev/projects/test/test-build-release/test是否可以更早创建?
g++ -static main.cpp -o test -I... -l...