Message boards : Questions and problems : How to compile custom modules?
Message board moderation
Author | Message |
---|---|
Send message Joined: 4 Apr 20 Posts: 7 |
I'm getting errors when trying to compile my own work generator. I created a copy of boinc-src/sched/sample_work_generator.cpp in a separate folder and a simplified copy of Makefile from samples/example_app (because the Makefile from sched folder looks very complicated). Here are my files: boincadm@debian:~/boinc-src/sample_work_generator$ ls -l total 16 -rw-r--r-- 1 boincadm boincadm 1128 May 2 21:40 Makefile -rw-r--r-- 1 boincadm boincadm 8472 May 2 21:34 sample_work_generator.cpp Here is my Makefile: boincadm@debian:~/boinc-src/sample_work_generator$ cat Makefile # This should work on Linux. Modify as needed for other platforms. BOINC_DIR = /home/boincadm/boinc-src BOINC_API_DIR = $(BOINC_DIR)/api BOINC_LIB_DIR = $(BOINC_DIR)/lib BOINC_ZIP_DIR = $(BOINC_DIR)/zip FREETYPE_DIR = /usr/include/freetype2 CXXFLAGS += -g \ -Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common \ -DAPP_GRAPHICS \ -I$(BOINC_DIR) \ -I$(BOINC_LIB_DIR) \ -I$(BOINC_API_DIR) \ -I$(BOINC_ZIP_DIR) \ -I$(FREETYPE_DIR) \ -I/home/boincadm/boinc-src/tools \ -I/home/boincadm/boinc-src/sched \ -I/home/boincadm/boinc-src/db \ -I/usr/include/mysql \ -L/usr/X11R6/lib \ -L. libstdc++.a: ln -s `g++ -print-file-name=libstdc++.a` install: swg # specify library paths explicitly (rather than -l) # because otherwise you might get a version in /usr/lib etc. swg: sample_work_generator.o libstdc++.a $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o sample_work_generator sample_work_generator.o libstdc++.a -pthread \ $(BOINC_API_DIR)/libboinc_api.a \ $(BOINC_LIB_DIR)/libboinc.a Here are the errors that I'm getting: boincadm@debian:~/boinc-src/sample_work_generator$ make install g++ -g -Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common -DAPP_GRAPHICS -I/home/boincadm/boinc-src -I/home/boincadm/boinc-src/lib -I/home/boincadm/boinc-src/api -I/home/boincadm/boinc-src/zip -I/usr/include/freetype2 -I/home/boincadm/boinc-src/tools -I/home/boincadm/boinc-src/sched -I/home/boincadm/boinc-src/db -I/usr/include/mysql -L/usr/X11R6/lib -L. -c -o sample_work_generator.o sample_work_generator.cpp ln -s `g++ -print-file-name=libstdc++.a` g++ -g -Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common -DAPP_GRAPHICS -I/home/boincadm/boinc-src -I/home/boincadm/boinc-src/lib -I/home/boincadm/boinc-src/api -I/home/boincadm/boinc-src/zip -I/usr/include/freetype2 -I/home/boincadm/boinc-src/tools -I/home/boincadm/boinc-src/sched -I/home/boincadm/boinc-src/db -I/usr/include/mysql -L/usr/X11R6/lib -L. -o sample_work_generator sample_work_generator.o libstdc++.a -pthread \ /home/boincadm/boinc-src/api/libboinc_api.a \ /home/boincadm/boinc-src/lib/libboinc.a /usr/bin/ld: sample_work_generator.o: in function `make_job()': /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:74: undefined reference to `DB_WORKUNIT::DB_WORKUNIT(DB_CONN*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:86: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:86: undefined reference to `SCHED_CONFIG::download_path(char const*, char*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:113: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:113: undefined reference to `SCHED_CONFIG::project_path(char const*, ...)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:113: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:113: undefined reference to `create_work(DB_WORKUNIT&, char const*, char const*, char const*, char const**, int, SCHED_CONFIG&, char const*, char const*, char*)' /usr/bin/ld: sample_work_generator.o: in function `main_loop()': /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:128: undefined reference to `check_stop_daemons()' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:130: undefined reference to `count_unsent_results(long&, long, int)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:138: undefined reference to `daemon_sleep(int)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:159: undefined reference to `daemon_sleep(int)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:161: undefined reference to `min_transition_time(double&)' /usr/bin/ld: sample_work_generator.o: in function `main': /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:201: undefined reference to `is_arg(char const*, char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:209: undefined reference to `g_print_queries' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:216: undefined reference to `is_arg(char const*, char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:216: undefined reference to `is_arg(char const*, char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:219: undefined reference to `is_arg(char const*, char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:219: undefined reference to `is_arg(char const*, char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:229: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:229: undefined reference to `SCHED_CONFIG::parse_file(char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:237: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:237: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:237: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:237: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:237: undefined reference to `boinc_db' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:237: undefined reference to `DB_CONN::open(char*, char*, char*, char*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:246: undefined reference to `DB_BASE::lookup(char const*)' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:252: undefined reference to `config' /usr/bin/ld: /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:252: undefined reference to `SCHED_CONFIG::project_path(char const*, ...)' /usr/bin/ld: sample_work_generator.o: in function `__static_initialization_and_destruction_0(int, int)': /home/boincadm/boinc-src/sample_work_generator/sample_work_generator.cpp:67: undefined reference to `DB_APP::DB_APP(DB_CONN*)' /usr/bin/ld: sample_work_generator.o: in function `DB_BASE::~DB_BASE()': /home/boincadm/boinc-src/db/db_base.h:92: undefined reference to `vtable for DB_BASE' /usr/bin/ld: sample_work_generator.o: in function `DB_APP::~DB_APP()': /home/boincadm/boinc-src/db/boinc_db.h:136: undefined reference to `vtable for DB_APP' /usr/bin/ld: sample_work_generator.o: in function `DB_WORKUNIT::~DB_WORKUNIT()': /home/boincadm/boinc-src/db/boinc_db.h:218: undefined reference to `vtable for DB_WORKUNIT' collect2: error: ld returned 1 exit status make: *** [Makefile:32: swg] Error 1 What should be the correct approach when I want to compile my own modules like work generators or validators? |
Send message Joined: 4 Apr 20 Posts: 7 |
The issue is fixed in this way: g++ sample_work_generator.cpp -I. -I/home/boincadm/boinc-src -I/home/boincadm/boinc-src/api -I/home/boincadm/boinc-src/lib -I/home/boincadm/boinc-src/db -I/home/boincadm/boinc-src/sched -I/home/boincadm/boinc-src/tools -I/usr/include/mysql -pthread -Wall /home/boincadm/boinc-src/sched/libsched.a /home/boincadm/boinc-src/lib/libboinc.a /home/boincadm/boinc-src/api/libboinc_api.a /usr/lib/x86_64-linux-gnu/libmysqlclient.a /usr/lib/x86_64-linux-gnu/libssl.a /usr/lib/x86_64-linux-gnu/libcrypto.a /home/boincadm/boinc-src/lib/libboinc_crypt.a -lz -ldl -o sample_work_generator |
Copyright © 2025 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.