Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux CMake安装can';找不到库并指向错误的编译器版本_Linux_Gcc_Cmake_Redhat - Fatal编程技术网

Linux CMake安装can';找不到库并指向错误的编译器版本

Linux CMake安装can';找不到库并指向错误的编译器版本,linux,gcc,cmake,redhat,Linux,Gcc,Cmake,Redhat,LinuxNoob-非常感谢您的帮助 一些背景: 我正试图从RHEL 6.5的源代码构建一个程序,该程序的依赖项具体如下: GCC 4.7及以上(对于C++ 11支持) CMake 2.8.9+ 我们已经在/usr/libexec/GCC中安装了GCC4.4.7,因此我们的linux人员在/usr/local/libexec/GCC(版本4.9)中构建并安装了新版本 我们没有CMake,因此我通过在/usr/local中对源代码进行unizipping,并按照此处的说明从头安装: /引导

LinuxNoob-非常感谢您的帮助

一些背景:

我正试图从RHEL 6.5的源代码构建一个程序,该程序的依赖项具体如下:

  • GCC 4.7及以上(对于C++ 11支持)
  • CMake 2.8.9+
我们已经在/usr/libexec/GCC中安装了GCC4.4.7,因此我们的linux人员在/usr/local/libexec/GCC(版本4.9)中构建并安装了新版本

我们没有CMake,因此我通过在/usr/local中对源代码进行unizipping,并按照此处的说明从头安装:

/引导 制造
安装

到目前为止还不错,在CMake的CMakeOutput.log中,它正确地指向了新的GCC路径,[COMPILER path=/usr/local/libexec/GCC/../4.9.2/

我确实需要将一个.so文件从/usr/lib64复制到/usr/local/lib64才能成功引导/生成它,但我不认为这是我问题的根源

问题:

现在我遇到的问题是:当我最终尝试使用“cmake”构建这个程序时

我发现以下问题:

--C编译器标识为GNU4.4.7

--执行测试编译器\u支持\u CXX11-失败

编译器标识应该是版本4.9,测试应该已经成功,但它没有

--找不到ZLIB(缺少:ZLIB\u库ZLIB\u INCLUDE\u DIR)

--找不到PNG(缺少:PNG\u库PNG\u PNG INCLUDE\udir)

Cmake在/usr/local/Cmake-3.0.2/Modules中有FindPNG-Cmake模块文件,但它似乎不知道它在哪里,我尝试将FindPNG.Cmake文件复制到程序的本地Cmake目录中,我只是一个接一个地得到丢失的模块文件

现在-我认为所有这些错误都可能是由于某些东西没有正确指向某些东西,可能没有为某些东西设置环境变量,在CMakeList文件中缺少或错误的CMake命令/变量,或者其他原因造成的,但是我花了相当多的时间尝试用不同的方法来修复它,但就是无法理解它出来了…任何帮助都将不胜感激

下面是我试图构建的程序的顶级CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(COLLADA2GLTF)

if (NOT WIN32)
#http://www.guyrutenberg.com/2014/01/05/enabling-c11-c0x-in-cmake/
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    message("-- C++11 Enabled")
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
    message("-- C++0x Enabled")
else()
        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
endif()

set(USE_OPEN3DGC "ON")
set(WITH_IN_SOURCE_BUILD "ON")
set(COLLADA2GLTF_BINARY_DIR, COLLADA2GLTF_SOURCE_DIR)
set(BUILD_SHARED_LIBS "OFF")

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)

configure_file("${CMAKE_CURRENT_SOURCE_DIR}/GitSHA1.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp" @ONLY)

set(TARGET_LIBS GeneratedSaxParser_static OpenCOLLADABaseUtils_static UTF_static ftoa_static MathMLSolver_static OpenCOLLADASaxFrameworkLoader_static OpenCOLLADAFramework_static buffer_static)

if (NOT WIN32)
    set(CMAKE_FIND_LIBRARY_SUFFIXES .so .a .dylib)
endif()

# Lets libxml2 work in a shared library
add_definitions(-DLIBXML_STATIC_FOR_DLL)

IF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") 
 ADD_DEFINITIONS(-fPIC) 
ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")

include_directories(${COLLADA2GLTF_SOURCE_DIR})
.......
include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/OpenCOLLADA/COLLADABaseUtils/include)
include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/OpenCOLLADA/COLLADASaxFrameworkLoader/include)
include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/OpenCOLLADA/GeneratedSaxParser/include)
if (WIN32)
    include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/misc)
endif()

if (USE_OPEN3DGC)
    add_definitions( -DUSE_OPEN3DGC )
    include_directories(${COLLADA2GLTF_SOURCE_DIR}/extensions/o3dgc-compression)

    include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/o3dgc/src)
    include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/o3dgc/src/o3dgc_common_lib/inc)
    include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/o3dgc/src/o3dgc_encode_lib/inc)
    include_directories(${COLLADA2GLTF_SOURCE_DIR}/dependencies/o3dgc/src/o3dgc_decode_lib/inc)
endif()

find_package(PNG)
if (PNG_FOUND)
    include_directories(${PNG_INCLUDE_DIR})
    include_directories(${ZLIB_INCLUDE_DIR})
    add_definitions(-DUSE_LIBPNG)
else()
    message(WARNING "libpng or one of its dependencies couldn't be found. Transparency may not be correctly detected.")
endif()

link_directories(${COLLADA2GLTF_BINARY_DIR}/lib)

if (WIN32)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
    add_definitions(-DWIN32)
    add_definitions(-EHsc)
endif()

add_subdirectory(dependencies/OpenCOLLADA)

if (USE_OPEN3DGC)
    add_subdirectory(dependencies/o3dgc/src)
endif()

set(GLTF_SOURCES
    COLLADA2GLTFWriter.h
    COLLADA2GLTFWriter.cpp
    ......
    assetModifiers/GLTFFlipUVModifier.cpp

    ${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp
    GitSHA1.h)

if (USE_OPEN3DGC)
LIST(APPEND GLTF_SOURCES
    extensions/o3dgc-compression/GLTF-Open3DGC.cpp
    extensions/o3dgc-compression/GLTF-Open3DGC.h)
endif()

option(CONVERT_SHARED "CONVERT_SHARED" OFF)
if (CONVERT_SHARED)
    add_library(collada2gltfConvert SHARED ${GLTF_SOURCES})
    #Make sure the dll is in the same directory as the executable
    if (WIN32)
        set_target_properties(collada2gltfConvert PROPERTIES RUNTIME_OUTPUT_DIRECTORY "bin")
    endif()
else()
    add_library(collada2gltfConvert STATIC ${GLTF_SOURCES})
    add_definitions(-DSTATIC_COLLADA2GLTF)
endif()

if (PNG_FOUND)
    LIST(APPEND TARGET_LIBS ${PNG_LIBRARY} ${ZLIB_LIBRARY})
endif()

if (USE_OPEN3DGC)
LIST(APPEND TARGET_LIBS o3dgc_common_lib o3dgc_enc_lib o3dgc_dec_lib)
endif()

IF("${CMAKE_SYSTEM}" MATCHES "Linux")
    LIST(APPEND TARGET_LIBS rt)
endif("${CMAKE_SYSTEM}" MATCHES "Linux")

target_link_libraries (collada2gltfConvert ${TARGET_LIBS})

set(GLTF_EXE_SOURCES  main.cpp
    ${CMAKE_CURRENT_BINARY_DIR}/GitSHA1.cpp
    GitSHA1.h)

if (WIN32)
LIST(APPEND GLTF_EXE_SOURCES ${COLLADA2GLTF_SOURCE_DIR}/dependencies/misc/getopt_long.c ${COLLADA2GLTF_SOURCE_DIR}/dependencies/misc/getopt.c ${COLLADA2GLTF_SOURCE_DIR}/dependencies/misc/getopt.h)
endif()

add_executable(collada2gltf ${GLTF_EXE_SOURCES})
target_link_libraries (collada2gltf collada2gltfConvert)

我猜您正面临着不满意的依赖性问题。RHEL/CentOS 6是一个非常旧的发行版,有一个旧的内核和应用程序;由于向后兼容性的需要,它的最新版本是用不推荐的包发行的(就像您的情况一样)。那么您有什么重要的理由使用它吗

我在RHEL 6.4开发软件的项目中花费了一年,我建议你设定一个不可能的目标:你需要安装到你的OS上,不仅仅是编译器,而且还有它的所有库(例如,实际C++标准库等等)。和标题。由于发行版中未提供这些版本,由于存在相同但不同的库,您将面临困难。由于所有系统软件都依赖于旧库,因此您的操作可能会使系统崩溃

但是,如果您想继续,可以尝试使用以下命令安装缺少的依赖项
ZLIB
PNG
(建议):
yum安装zlib-devel-libpng-devel


但我建议您节省时间,部署一些新的发行版:CentOS 7(如果您需要服务器)或Fedora 21(将于明天发布).

嘿,维塔利,谢谢你阅读我的帖子-不幸的是,由于项目要求,我不得不坚持使用RHEL 6.5…我理解你的担忧,但我们并没有在此基础上进行重大开发,只需要构建这个程序,希望我们会没事…而且-我忘了提到ZLIB和LIBPNG似乎已经安装好了,因此,CMake似乎无法为某些东西指出正确的路径……我也处于同样的情况:RHEL 6.4限制迫使我放弃了C++11的大部分功能。也许你应该寻找一个功能齐全的
chroot
环境,在那里你可以手动安装所有依赖项并替换编译器(在同一路径上
/usr/libexec/gcc
)。但您可能必须首先从源代码构建编译器……祝您好运)我知道这已经有一段时间了,但我有一个完全不同的问题,指出了错误的路径,这首先导致了这个问题,但重新安装库w yum install zlib-devel libpng-devel确实修复了关于依赖项的错误,所以我将Vitaly的答案标记为正确答案。您需要将其缩短一点-感谢您的帮助建议当您看到多个问题时,我建议为每个问题设置sscce。