Сервер BOIN C: компиляция модулей проекта - PullRequest
0 голосов
/ 03 мая 2020

Я изучаю BOIN C и пытаюсь настроить свой собственный проект. Я уже настроил сервер в тестовом приложении (в верхнем регистре), и он работает.

Теперь я пытаюсь выяснить, что является правильным процессом, когда я хочу использовать свои собственные модули (генератор работ, валидатор, и др c.). Моим первым шагом было скопировать boinc-src/sched/sample_work_generator.cpp в отдельную папку и попытаться скомпилировать его без каких-либо изменений кода, но я получаю ошибки. Пожалуйста, дайте мне знать, если у вас есть идеи по их решению.

Вот мои файлы:

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

Вот мой Makefile (упрощенная версия boin c -src / samples / example_app / 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

Вот ошибки, которые я получаю при попытке запустить make install:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...