2013-09-04 8 views
5

Ich versuche, Treiber für eine NOVINT Falcon namens libnifalcon zu installieren. Ich benutzte Cmake eine Make-Datei zu erstellen, aber wenn ich make ausführe erhalte ich die Fehlermeldung:Bearbeiten CMakeLists.txt zum Kompilieren mit -fPIC

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 

ich viele der Techniken versucht haben usinf zu kompilieren -fPIC aber keiner gearbeitet haben. Kann mir jemand sagen, wo im Makefile und was geschrieben werden soll, um mit -fPIC zu kompilieren?

Das Make-Datei ist:

  # 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 

Danke für Ihre Hilfe -Michael

EDIT: Wie empfohlen, ich habe versucht, CMakeLists.txt anstelle der Makefiles modifizieren sie erzeugt. Ich habe immer noch das gleiche Problem, so ist hier die 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) 
+2

Warum Sie die Make-Datei bearbeiten möchten, wenn sie sagt, ganz oben 'CMAKE Datei erzeugt: EDIT NICHT'!? Sie sollten die 'CMakeLists.txt' Datei bearbeiten, und Sie sollten Ihre Frage für' cmake' anstatt für 'make' markieren. – MadScientist

Antwort

2

Sie folgendes Makefile hinzufügen können.

CFLAGS += -fPIC 
CPPFLAGS += -fPIC 

Aber wirklich, Sie sollten den Code für cmake ändern, und dann das Makefile neu generieren. Es sollte eine Möglichkeit geben, CFLAGS in cmake hinzuzufügen.

EDIT: Scheint so, als könnten Sie die cmake Variablen CMAKE_C_FLAGS und CMAKE_CXX_FLAGS in der cmake Eingabedatei setzen.

+0

Ich versuchte, die Make-Datei ohne Erfolg ändern, aber ich denke, du hast recht mit der Einstellung der Fahnen in CMakeLists.txt Ich habe die Zeilen hinzugefügt: Satz (CMAKE_C_COMPILER „gcc“) Satz (CMAKE_CXX_COMPILER „g ++“) Satz (CMAKE_CXX_FLAGS "$ {} CMAKE_CXX_FLAGS -fPIC") Satz (CMAKE_C_FLAGS "$ {} CMAKE_C_FLAGS -fPIC") zu CMakeLists.txt aber ich bekomme immer noch den gleichen Fehler, irgendwie fühle mich die -fPIC Flagge zu sein, ist verloren – user2744971

0

I was Sie verknüpfen mit der falschen Boost-Bibliothek (libboost_program_options-mt.a). Es ist statisch (.a) und möglicherweise nicht mit fPIC kompiliert. Verwenden Sie die freigegebene Version (.so).

+0

Ich fand, dass libboost_program_options-mt.a Links zu libboost_program_options.a, so versuchte ich, ändern Sie die Verbindung zu libboost_program_options.so und ich bekomme den folgenden Fehler: /usr/bin/ld: versuchte statische Verknüpfung des dynamischen Objekts '/ usr/lib/gcc/x86_64 -linux-gnu/4.6 /../../../../lib/ libboost_program_options-mt.a ' collect2: ld gab 1 Exit-Status zurück make [2]: *** [lib/libnifalcon_cli_base.so .1.0.1] Fehler 1 make [1]: *** [src/util/CMakeFiles/nifalcon_cli_base_SHARED.dir/all] Fehler 2 make: *** [alle] Fehler 2 – user2744971

+0

Zuerst in Ihren CMakeLists. txt Sie setzen 'SET (Boost_USE_STATIC_LIBS ON)'. Ich nehme an, das ist der Grund, warum CMake die statische Version von libboost_program_options gewählt hat. Zweitens, hast du den ** Dateisystem-Link von libboost_program_options-mt.a so geändert, dass er auf libboost_program_options.so zeigt? Ich denke, das ist eine schlechte Idee.Ich denke, dass die meisten Probleme mit CMake-Einstellungen zusammenhängen. Welches Betriebssystem verwenden Sie zum Kompilieren? – ToniBig

+0

Das Problem war SET (Boost_USE_STATIC_LIBS ON), ich habe es in SET (Boost_USE_STATIC_LIBS OFF) geändert und jetzt funktioniert es. Vielen Dank für Ihre Hilfe! – user2744971

1

Das Problem war SET (Boost_USE_STATIC_LIBS ON) in der CMakeLists.txt, wenn die Änderung in SET (Boost_USE_STATIC_LIBS OFF), das Makefile hat gut funktioniert.

Vielen Dank an alle für ihre Hilfe

Verwandte Themen