编辑 CMakeLists.txt 以使用 -fPIC 进行编译

2024-04-30

我正在尝试为名为 libnifalcon 的 NOVINT Falcon 安装驱动程序。我使用 cmake 创建 make 文件,但是当我运行 make 时出现错误:

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  

我已经尝试了许多编译 usinf -fPIC 的技术,但没有一个起作用。谁能告诉我 makefile 中的位置以及要编写哪些内容才能使用 -fPIC 进行编译?

生成文件是:

            # 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

感谢您的帮助 -迈克尔

编辑:按照建议,我尝试修改 CMakeLists.txt 而不是它生成的 makefile。我仍然遇到同样的问题,所以这里是 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)

问题是 CMakeLists.txt 中的 SET(Boost_USE_STATIC_LIBS ON),当更改为 SET(Boost_USE_STATIC_LIBS OFF) 时,makefile 工作正常。

感谢大家的帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编辑 CMakeLists.txt 以使用 -fPIC 进行编译 的相关文章

  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 无法链接 Boost 正则表达式

    我目前正在尝试编译一个KIT 的收缩层次实现 http algo2 iti kit edu english routeplanning php这需要 Boost Regex 提供的 Makefile 已经确保 并且我还手动仔细检查了这一点
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • CMake:如何最好地构建多个(可选)子项目?

    想象一个包含多个组件的整体项目 basic io web app a app b app c 现在 假设 web 依赖于 io 而 io 又依赖于 basic 所有这些东西都在一个存储库中 并且有一个 CMakeLists txt 将它们构
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad

随机推荐

  • 无法从 GetProcessId(.. hWnd) (pInvoke) 中提取 processID

    我使用以下方法 DllImport kernel32 dll SetLastError true static extern int GetProcessId IntPtr hWnd 尝试获取正在运行的进程的 processId 我拥有的唯
  • 在应用商店上发布 PWA:google play 和 ios itunes

    有没有办法在应用商店上发布 PWA 来发布应用 谷歌播放和 iOS iTunes 不用用科尔多瓦制造一辆越野车 这会带来大量的维护问题 是的 有办法将您的 PAW 发布到 Android 应用商店 TWAs可信 Web 活动是一种使用基于自
  • MySQL - 选择字符串的前 10 个字节

    各位聪明的男士女士们 大家好 如何选择字符串的前 x 个字节 用例 我正在优化产品描述文本以上传到亚马逊 亚马逊按 utf8 中的字节 不是我之前所说的 latin1 而不是字符来测量字段长度 另一方面 MySQL 似乎是基于字符进行操作的
  • 两个 primefaces 日历组件验证

    我有一个表格JSF 2我使用双字段来指定日期范围 这样做的目的是不让用户选择第二个日期之前的第一个日期 所以我想在发送表单之前执行验证 使用p calendar成分 我所做的是将验证器绑定到第二个日历输入 以便在内部访问第一个组件并比较日期
  • 测试 powermock 模拟客户端调用的 http 服务器超时

    我需要为 connectTimeout 和 SocketTimeout 异常编写测试用例 我使用 powerMock 创建模拟对象 下面是我的代码 但是我的模拟对象出现空指针异常 任何帮助表示赞赏 package com util impo
  • 如何使用 JSON 和 Perl (HTML::Mason) 通过 AJAX 创建动态网页?

    我对处理 Javascript JSON 和 Peel 的方式感到有些困惑 而且大多数示例都是 PHP 语言 这对我没有帮助 我有一个页面 称为 main html 其中包含来自 MySQL 的数据 并且可以选择按 id 删除行 然后我让
  • 如何使用可滑动选项卡实现 PageTransformer

    在我的示例代码中 我在 MainActivity java 中有三个可滑动选项卡 即 Android IOS 和 WINDOWS 我使用滑动在选项卡之间切换 现在 我必须使用可滑动选项卡实现 PageTransformer 所以这里我需要您
  • Yii:如何用另一个模型数据填充选择输入?

    我正在玩一个小应用程序以学习使用 Yii 我创建了一个小型网络应用程序 其中包含 2 个模型 表 项目和任务 一对多关系 在模型类中正确配置 我现在尝试自定义任务 创建视图 用建议可用项目列表的选择框替换文本输入字段 我打开表单视图并尝试了
  • “分支”到底是什么意思?

    长话短说 据我所知 术语 分支 Git 术语 可能指的是相关但不同的事物 指向提交的非符号引用 指针 此类引用的名称 例如 master 存储库提交 DAG 的子图 由此类引用所指向的提交可到达的所有提交组成 然而 我发现这个术语显然指的是
  • 并发 log4j

    我有自己的日志引擎 它将日志写入带有阻塞队列的单独线程上 为了使用 标准软件 我正在考虑切换到 log4j 我不希望我的高并发软件因日志命令而变慢 这些日志命令在调用命令时将所有内容写入磁盘 log4j 可以用作垃圾箱吗 Log4j 是大多
  • python 解码部分 utf-8 字节数组

    我从不了解 UTF 8 规则的通道获取数据 因此 有时当 UTF 8 使用多个字节来编码一个字符并且我尝试将部分接收到的数据转换为文本时 我在转换过程中遇到错误 根据接口的性质 没有任何结束的流 我无法找出数据何时已满 因此我需要处理部分
  • 如何配置 apache 服务器与 HTTPS 后端服务器通信?

    我将 apache 服务器配置为反向代理 如果我将后端服务器指定为 HTTP 则它可以正常工作 那是 我将虚拟主机 443 配置为 ProxyPass primary store http localhost 9763 store Prox
  • Python 单行代码

    我想要用 Python 编写以下代码的单行解决方案 但是如何实现呢 total 0 for ob in self oblist total sum v amount for v in ob anoutherob 它返回总价值 我想要它是单行
  • 如何从复选框数组中保存布尔状态并在使用 SharedPreferences 加载适配器时加载其状态

    我有一个用于列表视图的 CustomAdapter 我需要使用 SharedPreferences 保存布尔数组中的所有复选框状态 我想将技巧的名称 字符串数组 保存为键和每个技巧的状态 我想到的 SharedPreferences 示例
  • Vagrant 同步文件夹权限

    我已经在 Vagrant 中设置了一个从 Windows 主机到来宾的同步文件夹 最初 文件的权限过于开放 因此我添加了以下安装选项 config vm synced folder my folder home vagrant my fol
  • Qt5 CMake 将所有库包含到可执行文件中

    我正在尝试使用 Qt 5 14 构建一个发布模式下的应用程序 并且 Qt Creator 内部一切正常 但是当我尝试单独运行可执行文件时 我收到如下错误 OS Windows 10 Qt 5 14 Cmake 3 5 我尝试过的 设置 CM
  • “未定义变量”通知

    我对 php 很陌生 所以我确信这是一个简单的过程 我收到这个错误 Notice Undefined variable conn in C Dev Webserver Apache2 2 htdocs EclipsePHP thecock
  • Google Checkout 和 Android Market 之间的 API 级别差异是否有记录?

    序言 这个问题已经过时了 不再有 Google Checkout 和 API Android Market 使用 Google Checkout 进行付费应用程序销售 Google Checkout 有相当广泛的 API Android M
  • 带有 return 语句的 Julia @parallel for 循环

    如何在满足条件时立即返回所有工作人员的函数中编写并行 for 循环 IE 像这样的东西 function test n sync parallel for i in 1 1000 statement if condition return
  • 编辑 CMakeLists.txt 以使用 -fPIC 进行编译

    我正在尝试为名为 libnifalcon 的 NOVINT Falcon 安装驱动程序 我使用 cmake 创建 make 文件 但是当我运行 make 时出现错误 Linking CXX shared library lib libnif