LINUX.ORG.RU

cmake добавляет ненужный LD-флаг.


0

1

Gentoo, gcc 4.5.3 Есть исходник проги, которая не собирается с флагом линковщика --as-needed.

В сmake-файлах проги параметры LD указаны так: set(CMAKE_EXE_LINKER_FLAGS «${CMAKE_EXE_LINKER_FLAGS} ${MYSQL_LIBS} -lxerces-c » )

в make.conf и в /usr/portage/profiles/default/linux/make.defaults LD-флаги написаны так: LDFLAGS="-Wl,-O1 -Wl,--no-as-needed", в переменных окружения ld-флагов нет.

Собираю прогу, и cmake пишет такое:

*******************CMAKE_EXE_LINKER_FLAGS: -Wl,-O1 -Wl,--as-needed -rdynamic -L/usr/lib/mysql -lmysqlclient -L/usr//lib -lz -lcrypt -lnsl -lm -L/usr/lib/ -lssl -lcrypto -lxerces-c

-- Configuring done

-- Generating done

-- Build files have been written to: /opt/v2 ... и т.д.

Где cmake берет --as-needed флаг ? Откуда он читает ${CMAKE_EXE_LINKER_FLAGS} ??



Последнее исправление: dmitry_kozak (всего исправлений: 2)
Ответ на: комментарий от anonymous

ничего личного к --as-needed не имею. Прога у меня такая есть, которая с ним не собирается, а программиста того давно уволили. Переделывать прогу не хватает времени и знаний.

dmitry_kozak
() автор топика

LDFLAGS от зависимостей не добавляются ?

${MYSQL_LIBS} - чему равно ? догадываюсь что этому "-Wl,--as-needed -rdynamic -L/usr/lib/mysql -lmysqlclient -L/usr//lib -lz -lcrypt -lnsl -lm -L/usr/lib/ -lssl -lcrypto"

если совсем криво и не разбираясь, можно так

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MYSQL_LIBS} -lxerces-c " )
string(REPLACE "-Wl,--as-needed"
         "-Wl,--no-as-needed" CMAKE_EXE_LINKER_FLAGS
          CMAKE_EXE_LINKER_FLAGS)
возможно нужно будет вывод сделать в другую переменную и после сделать set. примерно так
string(REPLACE "-Wl,--as-needed"
         "-Wl,--no-as-needed" CMAKE_EXE_LINKER_FLAGS_NEW
          CMAKE_EXE_LINKER_FLAGS)
set (CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS_NEW})

dhampire ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.