I'm trying to build a project on my new macbook which was previously built normally on linux computers.
at first when i run cmake, i get a the following:
-- The C compiler identification is Clang 5.1.0
-- The CXX compiler identification is Clang 5.1.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Performing Test HAVE_CLOCK_GETTIME
-- Performing Test HAVE_CLOCK_GETTIME - Failed
-- Boost version: 1.55.0
-- Found the following Boost libraries:
-- graph
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- -> doxygen not found -> api-doc will not be created
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/folder
and then when i run make, it works till around 30% and then it stop with this error:
/path/to/project/lib/helpers.cpp:555:2: error: use of undeclared identifier 'gettimeofday'
gettimeofday(&tv, NULL);
^
1 error generated.
make[2]: *** [lib/CMakeFiles/genom.dir/helpers.cpp.o] Error 1
make[1]: *** [lib/CMakeFiles/genom.dir/all] Error 2
make: *** [all] Error 2
I looked online, there was some suggestions for changing clock_gettime(CLOCK_REALTIME, &t); to clock_get_time(CLOCK_REALTIME, &t);
but they didnt work.
The error message you provided indicates that gettimeofday wasn't included. What clock_gettime has to do with it is not possible to say from the information you provided.
A quick search about this yields, that gettimeofday should be available (it's part of POSIX).
Do you have #include <sys/time.h>(Apple Docs) or #include <sys/types.h>(SO Answer)?
Related
cmake 2.8.12 correctly shows:
Boost version: 1.56.0
Found the following Boost libraries:
system
thread
log
log_setup
And the generated link.txt shows full, correct path to the .so files, but every Boost call is simply "In function...undefined reference to boost..." with no cxx11 or ABI or any other hints.
CMakeFiles/proj.dir/src/proj.cc.o: In function `proj::init()':
/code/proj/src/proj.cc:31: undefined reference to `boost::log::v2s_mt_posix::core::get()'
This is running on an old box, for example using libc-2.13.so on a 32bit processor. I compiled the boost libraries on the box yesterday and am trying to compile this on the box but am getting nowhere. I compiled cmake on the box as well.
Searching dozens of questions here has gotten me nowhere. Any suggestions on what is wrong? How to investigate the issue?
set(PROJ_NAME my-proj)
set(HEADERS
headers/proj.h
)
set(SOURCES
src/proj.cc
)
set(MAIN_FILE src/main.cc)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
add_executable (${PROJ_NAME} ${SOURCES}
${HEADERS} ${MAIN_FILE})
target_include_directories ( ${PROJ_NAME}
PUBLIC headers
PRIVATE .
PRIVATE /usr/local/lib/
)
set( Boost_LIBRARY_DIR /usr/local/lib )
find_package(Boost COMPONENTS system thread log log_setup REQUIRED)
link_directories(${Boost_LIBRARY_DIR})
target_link_libraries ( ${PROJ_NAME} -pthread ${Boost_LIBRARIES} )
I think that
set( Boost_LIBRARY_DIR /usr/local/lib )
is wrong and interferes badly with Find_Package. If you want to provide a hint, use e.g. BOOST_ROOT as documented:
BOOST_ROOT=~/custom/boost cmake .
Here's a fixed-up / simplified self-contained example that works:
File CMakeLists.txt
set(PROJ_NAME my-proj)
find_package(Boost 1.65.0 COMPONENTS system thread log log_setup REQUIRED)
set(HEADERS
headers/proj.h
)
set(SOURCES
src/proj.cc
)
set(MAIN_FILE src/main.cc)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
add_executable (${PROJ_NAME} ${SOURCES}
${HEADERS} ${MAIN_FILE})
target_include_directories ( ${PROJ_NAME}
PUBLIC headers
PRIVATE .
PRIVATE /usr/local/lib/
)
link_directories(${Boost_LIBRARY_DIR})
target_link_libraries ( ${PROJ_NAME} -pthread ${Boost_LIBRARIES} )
File headers/proj.h
File src/main.cc
int main() {
}
File src/proj.cc
#include <boost/thread.hpp>
void foo() {
boost::thread_group tg;
tg.create_thread([]{});
tg.join_all();
}
Proof of the pudding:
cmake .
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as
project(ProjectName)
near the top of the file, but after cmake_minimum_required().
CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found Boost: /usr/include (found suitable version "1.65.1", minimum required is "1.65.0") found components: system thread log log_setup chrono date_time atomic filesystem regex
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 3.22)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/q
sehe / tmp q make
[ 66%] Building CXX object CMakeFiles/my-proj.dir/src/proj.o
[ 66%] Building CXX object CMakeFiles/my-proj.dir/src/main.o
[100%] Linking CXX executable my-proj
[100%] Built target my-proj
sehe / tmp q ldd my-proj
linux-vdso.so.1 (0x00007ffd917e4000)
libboost_system.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 (0x00007f40c25bd000)
libboost_thread.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 (0x00007f40c2398000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f40c2179000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f40c1d6c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f40c1b54000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f40c1763000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f40c155b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f40c29e7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f40c11bd000)
NOTES
Note that if you use a too-recent boost then maybe the dependencies might be incorrect:
CMake Warning at /usr/share/cmake-3.22/Modules/FindBoost.cmake:1369 (message):
New Boost version may have incorrect or missing dependencies and imported
targets
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/FindBoost.cmake:1492 (_Boost_COMPONENT_DEPENDENCIES)
/usr/share/cmake-3.22/Modules/FindBoost.cmake:2102 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:5 (find_package)
On my system, e.g. in order to use Boost 1.78 successfully, I have to add Boost System manually. Linker errors:
make
[ 33%] Building CXX object CMakeFiles/my-proj.dir/src/proj.o
[ 66%] Building CXX object CMakeFiles/my-proj.dir/src/main.o
[100%] Linking CXX executable my-proj
CMakeFiles/my-proj.dir/src/proj.o: In function `__static_initialization_and_destruction_0(int, int)':
proj.cc:(.text+0x6a1): undefined reference to `boost::system::generic_category()'
proj.cc:(.text+0x6ad): undefined reference to `boost::system::generic_category()'
proj.cc:(.text+0x6b9): undefined reference to `boost::system::system_category()'
CMakeFiles/my-proj.dir/src/proj.o: In function `boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const':
proj.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition[_ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition]+0xb8): undefined reference to `boost::system::generic_category()'
proj.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition[_ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition]+0xf3): undefined reference to `boost::system::generic_category()'
CMakeFiles/my-proj.dir/src/proj.o: In function `boost::system::error_category::std_category::equivalent(std::error_code const&, int) const':
proj.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0xb8): undefined reference to `boost::system::generic_category()'
proj.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0xf3): undefined reference to `boost::system::generic_category()'
proj.cc:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0x1d2): undefined reference to `boost::system::generic_category()'
CMakeFiles/my-proj.dir/src/proj.o:proj.cc:(.text._ZN5boost16thread_exceptionC2EiPKc[_ZN5boost16thread_exceptionC5EiPKc]+0x28): more undefined references to `boost::system::generic_category()' follow
collect2: error: ld returned 1 exit status
CMakeFiles/my-proj.dir/build.make:121: recipe for target 'my-proj' failed
make[2]: *** [my-proj] Error 1
CMakeFiles/Makefile2:82: recipe for target 'CMakeFiles/my-proj.dir/all' failed
make[1]: *** [CMakeFiles/my-proj.dir/all] Error 2
Makefile:90: recipe for target 'all' failed
make: *** [all] Error 2
Fix:
target_link_libraries ( ${PROJ_NAME} boost_system )
I hope that it is not too late to drop my answer here.
TLDR: When Boost is installed using package managers such as Homebrew or macports often it is compiled using clang++. But on your project side, one might be using a different compiler, leading to undefined references in the linkage stage.
In order to use the compiler that you want to use in your project, you will have to use a version of Boost compiled with the same compiler. to achieve this you can customize Boost compilation on macos as follows:
In the Bootstrap stage use:
./bootstrap.sh --prefix=/usr/local/Cellar/boost_gcc --with-toolset=gcc --without-libraries=python,mpi
Install the headers-only part as follows:
./b2 headers
Customize the compiler to build the libraries by adding a file named user-config.jam with the following line in it:
using gcc : : /usr/local/bin/g++-11 ;
Compile and install the library as follows:
./b2 -d2 -j12 --layout=tagged-1.66 --user-config=user-config.jam install threading=multi,single link=shared,static
I hope that it helps.
I'm getting the error below when I run make to compile xpdf. It seems to do with papar sizes not been detected. I've not seen this kind of error before, usually its the math library that causes the compiler to complain. Is anyone experienced with this sort of error?
[ 71%] Linking CXX executable pdftohtml
CMakeFiles/xpdf_objs.dir/GlobalParams.cc.o: In function GlobalParams::GlobalParams(char const*)':
GlobalParams.cc:(.text+0xdbd): undefined reference to `paperinit'
GlobalParams.cc:(.text+0xdc2): undefined reference to `systempapername'
GlobalParams.cc:(.text+0xdde): undefined reference to `paperinfo'
GlobalParams.cc:(.text+0xdee): undefined reference to `paperpswidth'
GlobalParams.cc:(.text+0xe05): undefined reference to `paperpsheight'
GlobalParams.cc:(.text+0xe48): undefined reference to `paperdone'
collect2: error: ld returned 1 exit status
make[2]: *** [xpdf/CMakeFiles/pdftohtml.dir/build.make:219: xpdf/pdftohtml] Error 1
make[1]: *** [CMakeFiles/Makefile2:428: xpdf/CMakeFiles/pdftohtml.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
The terminal output from the cmake command is:
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=/usr/bin/g++ .
-- The C compiler identification is GNU 7.3.1
-- The CXX compiler identification is GNU 7.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for mkstemp
-- Looking for mkstemp - found
-- Looking for mkstemps
-- Looking for mkstemps - found
-- Looking for popen
-- Looking for popen - found
-- Performing Test HAVE_STD_SORT
-- Performing Test HAVE_STD_SORT - Success
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for fseek64
-- Looking for fseek64 - not found
-- Looking for _fseeki64
-- Looking for _fseeki64 - not found
-- Found FreeType (old-style includes): /usr/lib64/libfreetype.so
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")
-- Found PNG: /usr/lib64/libpng.so (found version "1.6.31")
-- Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)
-- Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
-- lcms2 not found
-- Qt5 found
CMake Deprecation Warning at cmake-config.txt:263 (cmake_policy):
The OLD behavior for policy CMP0020 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
CMakeLists.txt:15 (include)
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
CMake Deprecation Warning at xpdf-qt/CMakeLists.txt:27 (cmake_policy):
The OLD behavior for policy CMP0020 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/usr/build/xpdf-4.00
The package is broken. The current available source code does not properly handle the case when libpaper is present. For a full patch set that fixes the wrong behavior properly see this entry in Bugzilla.
I am building igatools logstream error, try to solve the problem through http://logstream.sourceforge.net/ download loglog, but logtream installation failed, has been studied for two weeks, still unresolved,
Error:
[ 47%] Building CXX object CMakeFiles/igatools.dir/source/base/tensor.cpp.o
In file included from
/usr/local/src/igatools/include/igatools/base/tensor.h:26:0,
from /usr/local/src/igatools/source/base/tensor.cpp:21:
/usr/local/src/igatools/include/igatools/base/logstream.h: In member
function ‘iga::LogStream& iga::LogStream::operator<<(double)’:
/usr/local/src/igatools/include/igatools/base/logstream.h:667:14: error:
‘numeric_limits’ is not a member of ‘std’
if (!(t <= std::numeric_limits<double>::max()))
^~~
/usr/local/src/igatools/include/igatools/base/logstream.h:667:34: error:
expected primary-expression before ‘double’
if (!(t <= std::numeric_limits<double>::max()))
^~~~~~
/usr/local/src/igatools/include/igatools/base/logstream.h:667:34: error:
expected ‘)’ before ‘double’
/usr/local/src/igatools/include/igatools/base/logstream.h:668:16: error:
expected ‘)’ before ‘;’ token
stream << t;
^
make[2]: *** [CMakeFiles/igatools.dir/source/base/tensor.cpp.o] Error 1
make[1]: *** [CMakeFiles/igatools.dir/all] Error 2
make: *** [all] Error 2
This is my system environment:
System:CentOS 6.7 x86_64
Cmake:3.1.0
Doxygen:1.8.1
Boost:1..64.0
Trilinos:11.6.1
GCC:6.2.0 (gcc,g++,gfortran)
Igatools:git clone https://github.com/igatoolsProject/igatools.git
Igatools install:
Before the installation boost1.54.0 boost report error, and finally in the boost1.54.0 on the basis of the same method used to compile and install boost1.64.0, to solve the problem of boost error, although it still shows boost1.54.0, but should not affect if Maybe, I think it is not difficult to solve
[root#localhost build_igatools]# cmake ${IGATOOLS_SOURCE} \
> -DTrilinos_PREFIX=${TRILINOS_PREFIX} \
> -DCMAKE_INSTALL_PREFIX=${IGATOOLS_PREFIX} \
> -DCMAKE_CXX_COMPILER=/usr/local/bin/g++
-- The CXX compiler identification is GNU 6.2.0
-- The C compiler identification is GNU 6.2.0
-- Check for working CXX compiler: /usr/local/bin/g++
-- Check for working CXX compiler: /usr/local/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/local/bin/gcc
-- Check for working C compiler: /usr/local/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found sed: /bin/sed.
-- Found PythonInterp: /usr/bin/python (found version "2.6.6")
-- Found Doxygen: /usr/local/bin/doxygen (found suitable version "1.8.1",
minimum required is "1.8.1")
-- TRILINOS support is enabled.
-- NURBS support is enabled.
-- Quadruple precision support (EXPERIMENTAL) is not enabled.
-- Multipatch features (EXPERIMENTAL) are not enabled.
-- Hierarchical splines support (EXPERIMENTAL) is not enabled.
-- Mesh refinement support (EXPERIMENTAL) is enabled.
-- Serialization support (EXPERIMENTAL) is not enabled.
-- Paraview plugin building (EXPERIMENTAL) is not enabled.
-- XML I/O support (EXPERIMENTAL) is not enabled.
-- VTK support (EXPERIMENTAL) is not enabled.
-- CGAL support (EXPERIMENTAL) is not enabled.
-- Boost version: 1.54.0
-- Found Trilinos: version 11.6.1.
-- IGATOOLS build type: DEBUG
Configuring instantiations
-- Generating physical basis table.
Default instantiation table was created.
Configuring Tutorial
-- Configured: example_06
-- Configured: example_02
-- Configured: example_07
-- Configured: example_05
-- Configured: example_08
-- Configured: example_01
-- Configured: example_04
-- Configured: example_09
-- Configured: example_03
Configuring unit tests
******************************************************************
**
** [1] To compile and install the library run:
** make install
**
** [2] To use the library it should be made visible to the loader.
** Add the following line to your ~/.bash_rc
** export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib
**
** [3] To generate and install the online documentation run:
** make doc
**
******************************************************************
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/build_igatools
[root#localhost build_igatools]#
When i make install on the error, suggesting that logtream error message, I tried to install logtream package, but failed
[root#localhost build_igatools]# make install
[ 0%] Generating file io/writer.inst
[ 0%] Generating file base/tensor.inst
[ 2%] Generating file base/quadrature_lib.inst
...
...
...
[ 43%] Generating file functions/ig_function_handler.inst
[ 43%] Generating file functions/sub_grid_function_element.inst
[ 45%] Generating file functions/grid_function_handler.inst
[ 45%] Generating file functions/function_element.inst
[ 45%] Generating file functions/sub_grid_function.inst
Scanning dependencies of target igatools
[ 47%] Building CXX object CMakeFiles/igatools.dir/source/base/tensor.cpp.o
In file included from
/usr/local/src/igatools/include/igatools/base/tensor.h:26:0,
from /usr/local/src/igatools/source/base/tensor.cpp:21:
/usr/local/src/igatools/include/igatools/base/logstream.h: In member
function ‘iga::LogStream& iga::LogStream::operator<<(double)’:
/usr/local/src/igatools/include/igatools/base/logstream.h:667:14: error:
‘numeric_limits’ is not a member of ‘std’
if (!(t <= std::numeric_limits<double>::max()))
^~~
/usr/local/src/igatools/include/igatools/base/logstream.h:667:34: error:
expected primary-expression before ‘double’
if (!(t <= std::numeric_limits<double>::max()))
^~~~~~
/usr/local/src/igatools/include/igatools/base/logstream.h:667:34: error:
expected ‘)’ before ‘double’
/usr/local/src/igatools/include/igatools/base/logstream.h:668:16: error:
expected ‘)’ before ‘;’ token
stream << t;
^
make[2]: *** [CMakeFiles/igatools.dir/source/base/tensor.cpp.o] Error 1
make[1]: *** [CMakeFiles/igatools.dir/all] Error 2
make: *** [all] Error 2
Oh,my god ,help me!
I'm having trouble building Microsoft's P language compiler on Mac OS X El Capitan 10.11.6.
Relevant portions of the build log (cd Bld; ./build.sh):
~/workspace/P/Bld
-- The C compiler identification is AppleClang 8.0.0.8000038
-- The CXX compiler identification is AppleClang 8.0.0.8000038
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/jlieberm/workspace/P/Bld/build
Scanning dependencies of target Prt
[ 12%] Building C object Prt/CMakeFiles/Prt.dir/API/PrtUser.c.o
In file included from /Users/jlieberm/workspace/P/Src/Prt/API/PrtUser.c:1:
In file included from /Users/jlieberm/workspace/P/Src/Prt/API/PrtUser.h:9:
In file included from /Users/jlieberm/workspace/P/Src/Prt/Core/PrtExecution.h:4:
In file included from /Users/jlieberm/workspace/P/Src/Prt/API/Prt.h:9:
In file included from /Users/jlieberm/workspace/P/Src/Prt/API/PrtProgram.h:14:
/Users/jlieberm/workspace/P/Src/Prt/API/PrtValues.h:255:8: error: unknown type
name 'PRT_FUN_PARAM_STATUS'
_In_ PRT_FUN_PARAM_STATUS status,
^
/Users/jlieberm/workspace/P/Src/Prt/API/PrtValues.h:326:8: error: unknown type
name 'PRT_FUN_PARAM_STATUS'
_In_ PRT_FUN_PARAM_STATUS status,
^
/Users/jlieberm/workspace/P/Src/Prt/API/PrtValues.h:436:8: error: unknown type
name 'PRT_FUN_PARAM_STATUS'
_In_ PRT_FUN_PARAM_STATUS status,
^
In file included from /Users/jlieberm/workspace/P/Src/Prt/API/PrtUser.c:1:
In file included from /Users/jlieberm/workspace/P/Src/Prt/API/PrtUser.h:9:
/Users/jlieberm/workspace/P/Src/Prt/Core/PrtExecution.h:164:122: error: unknown
type name 'PRT_FUN_PARAM_STATUS'
...PRT_MACHINEINST_PRIV * context, _In_ PRT_UINT32 varIndex, _In_ PRT_FUN_P...
^
/Users/jlieberm/workspace/P/Src/Prt/Core/PrtExecution.h:184:8: error: unknown
type name 'PRT_FUN_PARAM_STATUS'
_In_ PRT_FUN_PARAM_STATUS status,
^
/Users/jlieberm/workspace/P/Src/Prt/Core/PrtExecution.h:500:8: error: unknown
type name 'PRT_FUN_PARAM_STATUS'
_In_ PRT_FUN_PARAM_STATUS payloadStatus,
^
/Users/jlieberm/workspace/P/Src/Prt/API/PrtUser.c:508:3: error: use of
undeclared identifier 'PRT_FUN_PARAM_STATUS'
PRT_FUN_PARAM_STATUS argStatus = va_arg(argp, PRT_FUN_PA...
^
7 errors generated.
make[2]: *** [Prt/CMakeFiles/Prt.dir/API/PrtUser.c.o] Error 1
make[1]: *** [Prt/CMakeFiles/Prt.dir/all] Error 2
make: *** [all] Error 2
I am using mono 4.6.0 stable and cmake 3.6.2, which meet the minimum requirements in the P build guide for OS X and Linux.
What am I doing wrong?
This was a bug with the source code. The P team failed to include the PRT_FUN_PARAM_STATUS enum declaration in PrtValues.h:
typedef enum PRT_FUN_PARAM_STATUS
{
PRT_FUN_PARAM_CLONE,
PRT_FUN_PARAM_SWAP,
PRT_FUN_PARAM_XFER
} PRT_FUN_PARAM_STATUS;
Fixed with 1fd291c.
I'm trying to compile openwsman 2.4.12 (and 2.4.10) on a CentOS 7 system and am running into the error below. I've also duplicated the error on a RHEL 7 system as well and don't know what to make of it. It seems to be erroring on rdoc and trying to reference version 2.2, but I'm running 4.2.0 of rdoc. I am however running ruby 2.2.0, so not sure it its thinking it should be looking for 2.2 of rdoc because of the version of ruby I have, though both are the latest versions available. Any ideas would be greatly appreciated. It is worth mentioning that this worked on a RHEL 6.5 box.
Creating rdoc documentation .../bin/sh: ./rdoc2.2: No such file or directory
make[2]: *** [bindings/ruby/html] Error 127
make[1]: *** [bindings/ruby/CMakeFiles/ruby_gem.dir/all] Error 2
make: *** [all] Error 2
These are the results of the cmake command I ran.
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Version 2.4.12
-- Package Version "2.4"
-- Plugin API Version "2.2"
-- Package build timestamp 201501122347
-- Building for x86_64
-- Libraries will be installed in /usr/lib64
-- Configuration will be installed in /etc/openwsman
-- building PAM authentication
-- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version "1.0.1e")
-- Building Ruby bindings
-- Building Python bindings
-- Found PythonLibs: /usr/lib64/libpython2.7.so (found version "2.7.5")
-- Found PythonInterp: /bin/python (found version "2.7.5")
-- Found PythonLibs...
-- Building Python...
-- Found Perl: /bin/perl (found version "5.16.3")
-- Building Perl bindings
-- Found Java: /bin/java (found version "1.7.0.71")
-- Found JNI: /usr/lib/jvm/jre/lib/amd64/libjawt.so
-- Building Java bindings
-- Found SWIG: /usr/local/bin/swig (found version "3.0.3")
-- SWIG 3.0.3 found at /usr/local/bin/swig
-- Python executable: /bin/python
-- Python lib dir: /usr/lib64/python2.7/site-packages
-- Ruby executable: /usr/local/bin/ruby
-- Ruby version: 2.2.0
-- Ruby dir: /usr/local/lib/ruby/vendor_ruby/2.2.0
-- Ruby arch dir: /usr/local/lib/ruby/vendor_ruby/2.2.0/x86_64-linux
-- Ruby include path: /usr/local/include/ruby-2.2.0
-- Java compiler: /bin/javac
-- Java runtime: /bin/java
-- Java archiver: /bin/jar
-- Java archive name: openwsman-x86_64-2.4.12.jar
-- Perl executable: /bin/perl
-- Perl core dir: /usr/lib64/perl5/CORE
-- Perl vendor arch dir: /usr/lib64/perl5/vendor_perl
-- Perl vendor lib dir: /usr/share/perl5/vendor_perl
-- Found CURL: /usr/lib64/libcurl.so (found version "7.29.0")
-- Found LibXml2: /usr/lib64/libxml2.so (found version "2.9.1")
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Looking for crypt.h
-- Looking for crypt.h - found
-- Looking for ctype.h
-- Looking for ctype.h - found
-- Looking for CUnit/Basic.h
-- Looking for CUnit/Basic.h - not found
-- Looking for dirent.h
-- Looking for dirent.h - found
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for ifaddrs.h
-- Looking for ifaddrs.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for memory.h
-- Looking for memory.h - found
-- Looking for netinet/in.h
-- Looking for netinet/in.h - found
-- Looking for net/if_dl.h
-- Looking for net/if_dl.h - not found
-- Looking for net/if.h
-- Looking for net/if.h - found
-- Looking for pam/pam_appl.h
-- Looking for pam/pam_appl.h - not found
-- Looking for pam/pam_misc.h
-- Looking for pam/pam_misc.h - not found
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for security/pam_appl.h
-- Looking for security/pam_appl.h - found
-- Looking for security/pam_misc.h
-- Looking for security/pam_misc.h - found
-- Looking for stdarg.h
-- Looking for stdarg.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stdlib.h
-- Looking for stdlib.h - found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for string.h
-- Looking for string.h - found
-- Looking for sys/ioctl.h
-- Looking for sys/ioctl.h - found
-- Looking for sys/resource.h
-- Looking for sys/resource.h - found
-- Looking for sys/select.h
-- Looking for sys/select.h - found
-- Looking for sys/sendfile.h
-- Looking for sys/sendfile.h - found
-- Looking for sys/signal.h
-- Looking for sys/signal.h - found
-- Looking for sys/socket.h
-- Looking for sys/socket.h - found
-- Looking for sys/sockio.h
-- Looking for sys/sockio.h - not found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for vararg.h
-- Looking for vararg.h - not found
-- Looking for sys/time.h
-- Looking for sys/time.h - found
-- Looking for getifaddrs
-- Looking for getifaddrs - found
-- Looking for alloca
-- Looking for alloca - not found
-- Looking for alloca.h
-- Looking for alloca.h - found
-- Looking for bcopy
-- Looking for bcopy - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of in_addr_t
-- Check size of in_addr_t - failed
-- Check type in_addr_t as HAVE_IN_ADDR_T
-- Check type in_port_t as HAVE_IN_PORT_T
-- Check type sa_family_t as HAVE_SA_FAMILY_T
-- Check type int as HAVE_INT
-- Check type long as HAVE_LONG
-- Check type long long as HAVE_LONG_LONG
-- Check type short as HAVE_SHORT
-- Performing Test HAVE_SA_LEN
-- Performing Test HAVE_SA_LEN - Failed
-- Performing Test HAVE_IPV6
-- Performing Test HAVE_IPV6 - Success
-- SSL_LIB is at >libssl.so.1.0.1e<
-- Package file openwsman-2.4.12
-- Configuring done
-- Generating done
-- Build files have been written to: /root/openwsman-2.4.12/build
And these are the results of the make command I ran afterwards.
Scanning dependencies of target wsman_curl_client_transport
[ 1%] Building C object src/lib/CMakeFiles/wsman_curl_client_transport.dir/wsman-client-transport.o
[ 2%] Building C object src/lib/CMakeFiles/wsman_curl_client_transport.dir/wsman-curl-client-transport.o
Linking C shared library libwsman_curl_client_transport.so
[ 2%] Built target wsman_curl_client_transport
Scanning dependencies of target wsman_client
[ 2%] Building C object src/lib/CMakeFiles/wsman_client.dir/wsman-client.o
Linking C shared library libwsman_client.so
[ 2%] Built target wsman_client
Scanning dependencies of target wsman
[ 2%] Building C object src/lib/CMakeFiles/wsman.dir/u/buf.o
[ 3%] Building C object src/lib/CMakeFiles/wsman.dir/u/log.o
[ 4%] Building C object src/lib/CMakeFiles/wsman.dir/u/memory.o
[ 5%] Building C object src/lib/CMakeFiles/wsman.dir/u/misc.o
[ 6%] Building C object src/lib/CMakeFiles/wsman.dir/u/uri.o
[ 7%] Building C object src/lib/CMakeFiles/wsman.dir/u/uuid.o
[ 8%] Building C object src/lib/CMakeFiles/wsman.dir/u/lock.o
[ 9%] Building C object src/lib/CMakeFiles/wsman.dir/u/md5.o
[ 10%] Building C object src/lib/CMakeFiles/wsman.dir/u/strings.o
[ 10%] Building C object src/lib/CMakeFiles/wsman.dir/u/list.o
[ 11%] Building C object src/lib/CMakeFiles/wsman.dir/u/hash.o
[ 12%] Building C object src/lib/CMakeFiles/wsman.dir/u/base64.o
[ 13%] Building C object src/lib/CMakeFiles/wsman.dir/u/iniparser.o
[ 14%] Building C object src/lib/CMakeFiles/wsman.dir/u/debug.o
[ 15%] Building C object src/lib/CMakeFiles/wsman.dir/u/uerr.o
[ 16%] Building C object src/lib/CMakeFiles/wsman.dir/u/uoption.o
[ 17%] Building C object src/lib/CMakeFiles/wsman.dir/u/gettimeofday.o
[ 18%] Building C object src/lib/CMakeFiles/wsman.dir/u/syslog.o
[ 18%] Building C object src/lib/CMakeFiles/wsman.dir/u/pthreadx_win32.o
[ 19%] Building C object src/lib/CMakeFiles/wsman.dir/u/os.o
[ 20%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-libxml2-binding.o
[ 21%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-xml.o
[ 22%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-epr.o
[ 23%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-filter.o
[ 24%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-dispatcher.o
[ 25%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-soap.o
[ 26%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-faults.o
[ 27%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-xml-serialize.o
[ 27%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-soap-envelope.o
[ 28%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-debug.o
[ 29%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-soap-message.o
[ 30%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-subscription-repository.o
[ 31%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-event-pool.o
[ 32%] Building C object src/lib/CMakeFiles/wsman.dir/wsman-cimindication-processor.o
Linking C shared library libwsman.so
[ 32%] Built target wsman
[ 33%] Generating openwsman_wrap.c
Creating wrapper code for Python ...Done.
Scanning dependencies of target pywsman
[ 34%] Building C object bindings/python/CMakeFiles/pywsman.dir/openwsman_wrap.o
[ 34%] Building C object bindings/python/CMakeFiles/pywsman.dir//openwsman.o
Linking C shared library _pywsman.so
[ 34%] Built target pywsman
[ 35%] Generating openwsman_wrap.c
Creating wrapper code for Ruby...Done.
Scanning dependencies of target rbwsman
[ 36%] Building C object bindings/ruby/CMakeFiles/rbwsman.dir/openwsman_wrap.o
[ 37%] Building C object bindings/ruby/CMakeFiles/rbwsman.dir//openwsman.o
Linking C shared library _openwsman.so
[ 37%] Built target rbwsman
Scanning dependencies of target ruby_gem
[ 38%] Generating ext
[ 39%] Generating html
Creating rdoc documentation .../bin/sh: ./rdoc2.2: No such file or directory
make[2]: *** [bindings/ruby/html] Error 127
make[1]: *** [bindings/ruby/CMakeFiles/ruby_gem.dir/all] Error 2
make: *** [all] Error 2
As I thought this might be a bug or a mistake in my compiling process, I reported the issue to the developer of openwsman (Thanks Klaus Kämpf) on github and he looked into it and was able to update openwsman to ensure support for Ruby 2.2 which appears to be where the issue was. I included the github issue I posted below, which includes his response. After pulling down the latest code, I was able to successfully compile, make and install openwsman.
https://github.com/Openwsman/openwsman/issues/52