Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CMake Boost статическая линковка 
V
    Опции темы
rujmaster
Дата 8.10.2012, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



Добрый день. Требуется статически слинковать бинарник с библиотекой signals с помощью cmake. Библиотека собрана следующей командой:
Код

./b2 address-model=32 link=static --build-type=complete --with-signals --layout=tagged


Исходный код:
Код

#include <iostream>

#include "boost/signal.hpp"

void onSignal() {
  std::cout << "on signal" << std::endl;
}

int main() {
  boost::signal<void()> sig;
  sig.connect(&onSignal);
  sig();

  return 0;
}


cmake:

Код

project(test)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -static")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
aux_source_directory(. SRC_LIST)
include_directories(/home/koshchiy/dev/boost/boost_1_51_0)
link_directories(/home/koshchiy/dev/boost/boost_1_51_0/stage/lib)

add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} libboost_signals.a)


В результате собирается бинарь, при запуске которого получаю:
Код

Cannot execute '/home/koshchiy/dev/projects/test/test-build-release/test': No such file or directory


Вот что показывает ldd:
Код

koshchiy@koshchiy-lin-NB:~/dev/projects/test/test-build-release$ ldd test
    linux-gate.so.1 =>  (0xf7780000)
    libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7683000)
    libc.so.6 => /lib32/libc.so.6 (0xf74dc000)
    libm.so.6 => /lib32/libm.so.6 (0xf74b1000)
    /usr/lib/libc.so.1 => /lib/ld-linux.so.2 (0xf7781000)
    libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7493000)


Если убрать ключ -static, то бинарник нормально собирается и запускается. Бинарник, собранный статически руками (без cmake) также нормально запускается.

Использую Ubuntu 12.04 x64, gcc-4.7.0 



Это сообщение отредактировал(а) rujmaster - 8.10.2012, 10:57
PM MAIL   Вверх
bsa
Дата 8.10.2012, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



а он точно собирается?
PM   Вверх
rujmaster
Дата 8.10.2012, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



собирается, ldd же нашел )). Проблема решилась правкои CMakeLists.txt
Код

project(test)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -static")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
aux_source_directory(. SRC_LIST)
include_directories(/home/koshchiy/dev/boost/boost_1_51_0)
link_directories(/home/koshchiy/dev/boost/boost_1_51_0/stage/lib)

add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${PROJECT_NAME} boost_signals-gcc47-mt-1_51)


signals пересобрал с ключом --layout=versioned
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0814 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.