ecmwf / eckit

A C++ toolkit that supports development of tools and applications at ECMWF.

Home Page:https://confluence.ecmwf.int/display/eckit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Shared object not getting created

jarethholt opened this issue · comments

I'm running into a problem when compiling in which build/lib/libeckit.so is not being built, so it can't be found and used during 'make install'. All of the other shared objects in that directory are successfully built, and there are no other errors. Any ideas? Log files and build script attached.
make.log
cmake.log
install.txt

Hi,
We are not able to reproduce this issue on our side.
The log shows that the .so was created and the linker was called without errors reported.
[ 38%] Linking CXX shared library ../../lib/libeckit.so
Can you please check that you have not ran out of disk space?
Or that another process did not remove the file meanwhile?
These are usual conditions that have effects similar to this issue.

I checked, and I'm not running out of disk space. Running 'make install/local' works and creates libeckit.so and leaves it there. I copied it to a different place and then ran 'make install'; the original libeckit.so was removed. So something in install but not install/local is removing that object. Any ideas? My best guess is that there's a CMakeCache variable I should have edited, either when making this or ecbuild, but I don't know which one. Do you know any way I can narrow down what script/process is actually removing the .so?

Can you please explain what do you mean by "I copied it to a different place and then ran 'make install'" ?
What are you trying to achieve? The build system assumes that the build directory should not be moved.

I did the following from within eckit/build:
make install/local
cp lib/libeckit.so lib/libeckit2.so
make install
After make install/local, libeckit.so exists and can be copied. Running make install fails, and checking build/lib afterwards, libeckit.so is missing (though libeckit2.so still exists).

Can you please try to build in a clean (empty) build directory (after configuring):

make install

and then verify if the libeckit.so is present.

Also, from the logs I see you are using ecbuild from develop branch. Could you please try to use the master branch (version 2.10.2).

Some combination of cleaning and using the ecbuild master worked. libeckit.so is still there, and eckit-version works. Thanks for helping me out. I wouldn't have caught the ecbuild branch thing; develop is the default branch for git clone (ecbuildurl) for some reason.

I don't know if this is related, but: What binaries are supposed to be created after compilation? I have build/bin/eckit-version, but nothing else in that directory. My end goal is to compile Atlas, and that keeps looking for an eckit binary.

eckit-version is the only binary you should get.
eckit is a C++ toolkit and a set of libraries, not executables.
Atlas uses libeckit.so which in cmake terms is the target 'eckit'