[GNC-dev] gc 4.6 compile problem

John Ralls jralls at ceridwen.us
Wed Jun 30 23:15:00 EDT 2021



> On Jun 30, 2021, at 11:34 AM, Lothar Paltins via gnucash-devel <gnucash-devel at gnucash.org> wrote:
> 
> Hi,
> 
> I've tried to compile gnucash 4.6 under Linux (OpenSuse Tumbleweed):
> cmake -DCMAKE_INSTALL_PREFIX=/opt/gnucash ..
> make
> 
> There was the following error:
> 
>> [ 23%] Generating ../../lib64/guile/3.0/site-ccache/gnucash/engine/business-core.go
>> Backtrace:
>> In /usr/bin/guild:
>>    72:17 19 (main _)
>> In srfi/srfi-1.scm:
>>    634:9 18 (for-each #<procedure 7ffbb68528c0 at scripts/compile.?> ?)
>> In scripts/compile.scm:
>>   279:26 17 (_ _)
>> In system/base/target.scm:
>>     65:6 16 (with-target _ _)
>> In system/base/compile.scm:
>>    187:6 15 (compile-file "/home/lothar/src/work/gnucash/gnucash-4?" ?)
>>     53:4 14 (call-with-output-file/atomic _ _ _)
>> In ice-9/boot-9.scm:
>>  1752:10 13 (with-exception-handler _ _ #:unwind? _ # _)
>> In system/base/compile.scm:
>>    69:11 12 (_)
>>   190:11 11 (_ #<closed: file 7ffbb6930930>)
>>   331:39 10 (read-and-compile #<input: business-core.scm 13> #:from ?)
>>   261:27  9 (_ _ _)
>> In ice-9/boot-9.scm:
>>   2835:4  8 (save-module-excursion #<procedure 7ffbb53e0da0 at lang?>)
>> In language/scheme/compile-tree-il.scm:
>>    31:15  7 (_)
>> In ice-9/psyntax.scm:
>>  1230:36  6 (expand-top-sequence (#<syntax:business-core.scm:22:0?>) ?)
>>  1222:19  5 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
>>   259:10  4 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?)
>> In unknown file:
>>           3 (load-extension "libgnucash-guile" "gnc_guile_bindings_?")
>> In system/foreign-library.scm:
>>   190:25  2 (load-foreign-library _ #:extensions _ # _ #:search-path ?)
>> In unknown file:
>>           1 (dlopen "/usr/lib64/libgnucash-guile.so" 1)
>> In ice-9/boot-9.scm:
>>  1685:16  0 (raise-exception _ #:continuable? _)
>> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
>> In procedure dlopen: file "/usr/lib64/libgnucash-guile.so", message "/usr/lib64/libgnucash-guile.so: undefined symbol: gnc_pricedb_lookup_latest_before_any_currency_t64"
>> make[2]: *** [bindings/guile/CMakeFiles/scm-engine-0.dir/build.make:79: lib64/guile/3.0/site-ccache/gnucash/engine/business-core.go] Error 1
>> make[1]: *** [CMakeFiles/Makefile2:11852: bindings/guile/CMakeFiles/scm-engine-0.dir/all] Error 2
>> make: *** [Makefile:166: all] Error 2
> 
> According to the NEWS file, gnc_pricedb_lookup_latest_before_any_currency_t64 was replaced by gnc_pricedb_lookup_nearest_before_any_currency_t64. The problem seems to be the dlopen "/usr/lib64/libgnucash-guile.so", that's the old 4.5 library installed by the distribution. Copying the new generated library build/lib64/libgnucash-guile.so to /usr/lib64 fixes the issue, but that's a pretty ugly hack.

You don't need to replace the old libraries, just remove them. Then Guile won't be able to find them and will fall back to looking where it's told to, in the build directory. Kinda like that (probably apocryphal) Churchill quote about Americans always doing the right thing after they'd exhausted all of the alternatives. Make/ninja uninstall is easiest but doesn't always work if there are filename changes and the builddir or sourcedir are reused. If it fails it's usually enough to remove libgnc* from the install library folder; sometimes you also need to remove the installed *.scm and *.go files from their respective directories in libdir/guile/version/ccache and sharedir/guile.

Regards,
John Ralls



More information about the gnucash-devel mailing list