I'm trying to install drivers for a NOVINT Falcon called libnifalcon. I used cmake to create a make file, but when I run make I get the error:
Linking CXX shared library ../../lib/libnifalcon_cli_base.so
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libboost_program_options-mt.a(cmdline.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libboost_program_options-mt.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: ** [lib/libnifalcon_cli_base.so.1.0.1] Error 1
make[1]: ** [src/util/CMakeFiles/nifalcon_cli_base_SHARED.dir/all] Error 2
make: *** [all] Error 2
I've tried many of the techniques to compile usinf -fPIC but none have worked. Can anyone tell me where in the makefile, and what to write in order to compile using -fPIC?
The makefile is:
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 2.8
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Remove some rules from gmake that .SUFFIXES does not remove.
SUFFIXES =
.SUFFIXES: .hpux_make_needs_suffix_list
# Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
#SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E remove -f
# The program to use to edit the cache.
CMAKE_EDIT_COMMAND = /usr/bin/ccmake
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/mikewrock/Desktop/h3d/libnifalcon-1.0.1
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/mikewrock/Desktop/h3d/libnifalcon-1.0.1/linux
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
/usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target install
install: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install
# Special rule for the target install
install/fast: preinstall/fast
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
/usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast
# Special rule for the target install/local
install/local: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local
# Special rule for the target install/local
install/local/fast: install/local
.PHONY : install/local/fast
# Special rule for the target install/strip
install/strip: preinstall
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip
# Special rule for the target install/strip
install/strip/fast: install/strip
.PHONY : install/strip/fast
# Special rule for the target list_install_components
list_install_components:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
.PHONY : list_install_components
# Special rule for the target list_install_components
list_install_components/fast: list_install_components
.PHONY : list_install_components/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/mikewrock/Desktop/h3d/libnifalcon-1.0.1/linux/CMakeFiles /home/mikewrock/Desktop/h3d/libnifalcon-1.0.1/linux/CMakeFiles/progress.marks
$(MAKE) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/mikewrock/Desktop/h3d/libnifalcon-1.0.1/linux/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
$(MAKE) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named nifalcon_DEPEND
# Build rule for target.
nifalcon_DEPEND: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_DEPEND
.PHONY : nifalcon_DEPEND
# fast build rule for target.
nifalcon_DEPEND/fast:
$(MAKE) -f src/CMakeFiles/nifalcon_DEPEND.dir/build.make src/CMakeFiles/nifalcon_DEPEND.dir/build
.PHONY : nifalcon_DEPEND/fast
#=============================================================================
# Target rules for targets named nifalcon_SHARED
# Build rule for target.
nifalcon_SHARED: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_SHARED
.PHONY : nifalcon_SHARED
# fast build rule for target.
nifalcon_SHARED/fast:
$(MAKE) -f src/CMakeFiles/nifalcon_SHARED.dir/build.make src/CMakeFiles/nifalcon_SHARED.dir/build
.PHONY : nifalcon_SHARED/fast
#=============================================================================
# Target rules for targets named nifalcon_STATIC
# Build rule for target.
nifalcon_STATIC: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_STATIC
.PHONY : nifalcon_STATIC
# fast build rule for target.
nifalcon_STATIC/fast:
$(MAKE) -f src/CMakeFiles/nifalcon_STATIC.dir/build.make src/CMakeFiles/nifalcon_STATIC.dir/build
.PHONY : nifalcon_STATIC/fast
#=============================================================================
# Target rules for targets named nifalcon_cli_base_DEPEND
# Build rule for target.
nifalcon_cli_base_DEPEND: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_cli_base_DEPEND
.PHONY : nifalcon_cli_base_DEPEND
# fast build rule for target.
nifalcon_cli_base_DEPEND/fast:
$(MAKE) -f src/util/CMakeFiles/nifalcon_cli_base_DEPEND.dir/build.make src/util/CMakeFiles/nifalcon_cli_base_DEPEND.dir/build
.PHONY : nifalcon_cli_base_DEPEND/fast
#=============================================================================
# Target rules for targets named nifalcon_cli_base_SHARED
# Build rule for target.
nifalcon_cli_base_SHARED: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_cli_base_SHARED
.PHONY : nifalcon_cli_base_SHARED
# fast build rule for target.
nifalcon_cli_base_SHARED/fast:
$(MAKE) -f src/util/CMakeFiles/nifalcon_cli_base_SHARED.dir/build.make src/util/CMakeFiles/nifalcon_cli_base_SHARED.dir/build
.PHONY : nifalcon_cli_base_SHARED/fast
#=============================================================================
# Target rules for targets named nifalcon_cli_base_STATIC
# Build rule for target.
nifalcon_cli_base_STATIC: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_cli_base_STATIC
.PHONY : nifalcon_cli_base_STATIC
# fast build rule for target.
nifalcon_cli_base_STATIC/fast:
$(MAKE) -f src/util/CMakeFiles/nifalcon_cli_base_STATIC.dir/build.make src/util/CMakeFiles/nifalcon_cli_base_STATIC.dir/build
.PHONY : nifalcon_cli_base_STATIC/fast
#=============================================================================
# Target rules for targets named nifalcon_device_boost_thread_DEPEND
# Build rule for target.
nifalcon_device_boost_thread_DEPEND: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_device_boost_thread_DEPEND
.PHONY : nifalcon_device_boost_thread_DEPEND
# fast build rule for target.
nifalcon_device_boost_thread_DEPEND/fast:
$(MAKE) -f src/util/CMakeFiles/nifalcon_device_boost_thread_DEPEND.dir/build.make src/util/CMakeFiles/nifalcon_device_boost_thread_DEPEND.dir/build
.PHONY : nifalcon_device_boost_thread_DEPEND/fast
#=============================================================================
# Target rules for targets named nifalcon_device_boost_thread_SHARED
# Build rule for target.
nifalcon_device_boost_thread_SHARED: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_device_boost_thread_SHARED
.PHONY : nifalcon_device_boost_thread_SHARED
# fast build rule for target.
nifalcon_device_boost_thread_SHARED/fast:
$(MAKE) -f src/util/CMakeFiles/nifalcon_device_boost_thread_SHARED.dir/build.make src/util/CMakeFiles/nifalcon_device_boost_thread_SHARED.dir/build
.PHONY : nifalcon_device_boost_thread_SHARED/fast
#=============================================================================
# Target rules for targets named nifalcon_device_boost_thread_STATIC
# Build rule for target.
nifalcon_device_boost_thread_STATIC: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 nifalcon_device_boost_thread_STATIC
.PHONY : nifalcon_device_boost_thread_STATIC
# fast build rule for target.
nifalcon_device_boost_thread_STATIC/fast:
$(MAKE) -f src/util/CMakeFiles/nifalcon_device_boost_thread_STATIC.dir/build.make src/util/CMakeFiles/nifalcon_device_boost_thread_STATIC.dir/build
.PHONY : nifalcon_device_boost_thread_STATIC/fast
#=============================================================================
# Target rules for targets named barrow_mechanics
# Build rule for target.
barrow_mechanics: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 barrow_mechanics
.PHONY : barrow_mechanics
# fast build rule for target.
barrow_mechanics/fast:
$(MAKE) -f examples/CMakeFiles/barrow_mechanics.dir/build.make examples/CMakeFiles/barrow_mechanics.dir/build
.PHONY : barrow_mechanics/fast
#=============================================================================
# Target rules for targets named falcon_led
# Build rule for target.
falcon_led: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 falcon_led
.PHONY : falcon_led
# fast build rule for target.
falcon_led/fast:
$(MAKE) -f examples/CMakeFiles/falcon_led.dir/build.make examples/CMakeFiles/falcon_led.dir/build
.PHONY : falcon_led/fast
#=============================================================================
# Target rules for targets named falcon_test_cli
# Build rule for target.
falcon_test_cli: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 falcon_test_cli
.PHONY : falcon_test_cli
# fast build rule for target.
falcon_test_cli/fast:
$(MAKE) -f examples/CMakeFiles/falcon_test_cli.dir/build.make examples/CMakeFiles/falcon_test_cli.dir/build
.PHONY : falcon_test_cli/fast
#=============================================================================
# Target rules for targets named findfalcons
# Build rule for target.
findfalcons: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 findfalcons
.PHONY : findfalcons
# fast build rule for target.
findfalcons/fast:
$(MAKE) -f examples/CMakeFiles/findfalcons.dir/build.make examples/CMakeFiles/findfalcons.dir/build
.PHONY : findfalcons/fast
#=============================================================================
# Target rules for targets named findfalcons_multi
# Build rule for target.
findfalcons_multi: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 findfalcons_multi
.PHONY : findfalcons_multi
# fast build rule for target.
findfalcons_multi/fast:
$(MAKE) -f examples/CMakeFiles/findfalcons_multi.dir/build.make examples/CMakeFiles/findfalcons_multi.dir/build
.PHONY : findfalcons_multi/fast
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... install"
@echo "... install/local"
@echo "... install/strip"
@echo "... list_install_components"
@echo "... rebuild_cache"
@echo "... nifalcon_DEPEND"
@echo "... nifalcon_SHARED"
@echo "... nifalcon_STATIC"
@echo "... nifalcon_cli_base_DEPEND"
@echo "... nifalcon_cli_base_SHARED"
@echo "... nifalcon_cli_base_STATIC"
@echo "... nifalcon_device_boost_thread_DEPEND"
@echo "... nifalcon_device_boost_thread_SHARED"
@echo "... nifalcon_device_boost_thread_STATIC"
@echo "... barrow_mechanics"
@echo "... falcon_led"
@echo "... falcon_test_cli"
@echo "... findfalcons"
@echo "... findfalcons_multi"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
Thanks for your help -Michael
EDIT: As recommended, I've tried modifying CMakeLists.txt instead of the makefiles it generates. I'm still having the same issue, so here is the CMakeLists.txt:
######################################################################################
# CMake directives
######################################################################################
#Require 2.6 or higher.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
#See if we've got our cmake modules checked out. If not, advise to do so.
IF(EXISTS "${CMAKE_SOURCE_DIR}/../compily_buildd/cmake")
SET(BUILDSYS_CMAKE_DIR "${CMAKE_SOURCE_DIR}/../compily_buildd/cmake")
MESSAGE(STATUS "Using outside compily_buildd directory ${BUILDSYS_CMAKE_DIR}")
ELSEIF(EXISTS "${CMAKE_SOURCE_DIR}/compily_buildd/cmake")
SET(BUILDSYS_CMAKE_DIR "${CMAKE_SOURCE_DIR}/compily_buildd/cmake")
MESSAGE(STATUS "Using compily_buildd git submodule ${BUILDSYS_CMAKE_DIR}")
ELSE(EXISTS "${CMAKE_SOURCE_DIR}/compily_buildd/cmake")
MESSAGE(FATAL_ERROR
"Cannot find compily_buildd directory for np labs project compilation functions.\n"
"Make sure you've either put the compily_buildd directory in the same root as your repository directory, or that you've used the compily_buildd submodule (git submodule update --init).\n"
"NP Labs build repository is available at git://github.com/qdot/compily_buildd.git"
)
ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/../compily_buildd/cmake")
LIST(APPEND CMAKE_MODULE_PATH ${BUILDSYS_CMAKE_DIR})
INCLUDE( ${BUILDSYS_CMAKE_DIR}/BuildSysCMakeLib.cmake )
#setting link directory policy
IF(COMMAND cmake_policy)
CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND cmake_policy)
######################################################################################
# Project declaration and options
######################################################################################
#Project declaration
PROJECT(LIBNIFALCON)
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC" )
INITIALIZE_BUILD()
#Common Options
OPTION_LIBRARY_BUILD_STATIC(ON)
#We can't build shared on MSVC yet
IF(NOT MSVC)
OPTION_LIBRARY_BUILD_SHARED(ON)
ENDIF(NOT MSVC)
OPTION_FAST_MATH(ON)
OPTION_ARCH_OPTS(ON)
OPTION_GPROF(OFF)
#OPTION_LOG4CXX(OFF LIBNIFALCON_REQ_LIBS)
#OPTION_CREATE_VERSION_FILE(ON "${CMAKE_CURRENT_SOURCE_DIR}/src/version.cc")
#Project specific options
OPTION(FORCE_FTD2XX_BUILD "Force building FTD2XX libraries on non-windows platforms" OFF)
OPTION(STATIC_LINK_SUFFIXES "Add a symbolic link with [library_name]_s on static libraries (for ease in building staticly linked binaries under gcc)" OFF)
OPTION(BUILD_SWIG_BINDINGS "Build Java/Python bindings for libnifalcon" OFF)
OPTION(BUILD_EXAMPLES "Build libnifalcon examples" ON)
######################################################################################
# Project specific package finding
######################################################################################
#Find communications libraries
IF(WIN32 OR FORCE_FTD2XX_BUILD)
FIND_PACKAGE(libftd2xx)
IF(LIBFTD2XX_FOUND)
INCLUDE_DIRECTORIES(${LIBFTD2XX_INCLUDE_DIRS})
SET(LIBNIFALCON_REQ_LIBS ${LIBFTD2XX_LIBRARIES})
ENDIF(LIBFTD2XX_FOUND)
ENDIF(WIN32 OR FORCE_FTD2XX_BUILD)
IF(NOT LIBFTD2XX_FOUND)
FIND_PACKAGE(libusb-1.0)
IF(LIBUSB_1_FOUND)
INCLUDE_DIRECTORIES(${LIBUSB_1_INCLUDE_DIRS})
SET(LIBNIFALCON_REQ_LIBS ${LIBUSB_1_LIBRARIES})
ENDIF(LIBUSB_1_FOUND)
ENDIF(NOT LIBFTD2XX_FOUND)
IF(NOT LIBFTD2XX_FOUND AND NOT LIBUSB_1_FOUND)
MESSAGE(FATAL_ERROR "Either ftd2xx or libusb-1.0 is required to build libnifalcon. Check the README file for info.")
ENDIF(NOT LIBFTD2XX_FOUND AND NOT LIBUSB_1_FOUND)
#Find boost, used all over the place
SET(Boost_USE_MULTITHREADED ON)
SET(Boost_USE_STATIC_LIBS ON)
FIND_PACKAGE(Boost REQUIRED)
IF(NOT Boost_FOUND)
MESSAGE(FATAL_ERROR "libnifalcon requires a minimum of the Boost 1.33 headers to build")
ENDIF(NOT Boost_FOUND)
FIND_PACKAGE(Boost COMPONENTS program_options thread)
######################################################################################
# Project specific globals
######################################################################################
#library definitions
SET(LIBNIFALCON_MAJOR_VERSION 1)
SET(LIBNIFALCON_MINOR_VERSION 0)
SET(LIBNIFALCON_BUILD_VERSION 1)
# BUILDSYS_CPACK_INFO(
# NAME "libnifalcon"
# MAJOR_VERSION ${LIBNIFALCON_MAJOR_VERSION}
# MINOR_VERSION ${LIBNIFALCON_MINOR_VERSION}
# BUILD_VERSION ${LIBNIFALCON_BUILD_VERSION}
# VENDOR "Nonpolynomial Labs"
# DESCRIPTION "Open Source Driver for the Novint Falcon Haptic Controller"
# )
# INCLUDE(CPack)
SET(LIBNIFALCON_VERSION ${LIBNIFALCON_MAJOR_VERSION}.${LIBNIFALCON_MINOR_VERSION}.${LIBNIFALCON_BUILD_VERSION})
#library name definitions
CREATE_LIBRARY_LINK_NAME(nifalcon)
CREATE_LIBRARY_LINK_NAME(nifalcon_cli_base)
CREATE_LIBRARY_LINK_NAME(nifalcon_device_boost_thread)
SET(LIBNIFALCON_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
INCLUDE_DIRECTORIES(${LIBNIFALCON_INCLUDE_DIR} ${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})
#If we build libusb staticly on apple, we need the proper frameworks
IF(BUILD_STATIC AND APPLE)
LIST(APPEND LIBNIFALCON_EXE_LINK_LIBS "-framework IOKit" "-framework CoreFoundation")
ENDIF(BUILD_STATIC AND APPLE)
LIST(APPEND LIBNIFALCON_EXE_LINK_LIBS
${libnifalcon_LIBRARY}
${LIBNIFALCON_REQ_LIBS}
)
ADD_SUBDIRECTORY(include)
ADD_SUBDIRECTORY(src)
IF(BUILD_EXAMPLES)
ADD_SUBDIRECTORY(examples)
ENDIF(BUILD_EXAMPLES)
IF(BUILD_SWIG_BINDINGS)
ADD_SUBDIRECTORY(lang/swig)
ENDIF(BUILD_SWIG_BINDINGS)
# pkg-config (use the CPack information)
# FIND_PACKAGE(PkgConfig)
# if(PKG_CONFIG_EXECUTABLE)
# set(PC_SHORT_NAME "${BUILDSYS_CPACK_NAME}")
# set(PC_LONG_NAME "${BUILDSYS_CPACK_NAME}")
# set(PC_LIBRARY_NAME "${LIBNIFALCON_CPP}")
# set(PC_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
# set(PC_VERSION "${LIBNIFALCON_MAJOR_VERSION}.${LIBNIFALCON_MINOR_VERSION}.${LIBNIFALCON_BUILD_VERSION}")
# if(LIBUSB_1_FOUND)
# set(PC_REQUIRES "${PC_REQUIRES}libusb-1.0 ")
# set(PC_LINK_FLAGS "${PC_LINK_FLAGS}-lnifalcon_comm_libusb ")
# endif(LIBUSB_1_FOUND)
# set(PC_LINK_FLAGS "${lib${PC_LIBRARY_NAME}_LINK_FLAGS} ${PC_LINK_FLAGS}")
# set(PC_LINK_FLAGS "-l${PC_LIBRARY_NAME} ${PC_LINK_FLAGS}")
# set(PC_COMPILE_FLAGS "${lib${PC_LIBRARY_NAME}_COMPILE_FLAGS}")
# set(PC_CONFIGURED_FILE
# ${CMAKE_BINARY_DIR}/libnifalcon.pc
# )
# MESSAGE("-- Generating ${PC_CONFIGURED_FILE}")
# configure_file(
# ${CMAKE_SOURCE_DIR}/libnifalcon.pc.cmake
# ${PC_CONFIGURED_FILE}
# @ONLY
# )
# set(PKG_CONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
# install(FILES ${PC_CONFIGURED_FILE} DESTINATION ${PKG_CONFIG_DIR})
# endif(PKG_CONFIG_EXECUTABLE)
The issue was SET(Boost_USE_STATIC_LIBS ON) in the CMakeLists.txt, when changed to SET(Boost_USE_STATIC_LIBS OFF), the makefile worked fine.
Thanks to everyone for their help
You can add the following to the Makefile.
But, really, you should be modifying the code for cmake, and then regenerate the Makefile. There should be a way to add to CFLAGS in cmake.
EDIT: Seems like you can set the cmake variables CMAKE_C_FLAGS and CMAKE_CXX_FLAGS in the cmake input file.
I thing your are linking against the wrong boost library (libboost_program_options-mt.a). It is static (.a) and possibly not compiled using fPIC. Try using the shared version (.so).