Как быстро скомпилировать большой проект с открытым исходным кодом после изменения некоторых исходных файлов?

Я только что узнал cmake а также make на несколько дней.

Я хочу изменить некоторые исходные файлы в ceph (написано на C ++) и скомпилируйте их, чтобы изучить, как ceph работает. Но на его компиляцию уходит слишком много времени, даже если я просто внесу небольшие изменения. Как я должен сделать?

Или я хочу собрать некоторые подмодули ceph в динамическую библиотеку ссылок (.so), а затем замените оригиналы на них. Как я могу это сделать?

Спасибо!

———————————————
Я добавляю одну строку кода в определенный исходный файл:

cout << 'test' << endl

и запустите make (я уже несколько раз делал make)

make

выходы в оболочке:

[bop@client1 jewel]$ make
Making all in .
make[1]: Entering directory `/home/bop/jewel'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/bop/jewel'
Making all in src
make[1]: Entering directory \`/home/bop/jewel/src\'
make  all-recursive
make[2]: Entering directory `/home/bop/jewel/src'
Making all in ocf
make[3]: Entering directory `/home/bop/jewel/src/ocf'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/bop/jewel/src/ocf'
..............
..............
./make_version -g ./.git_version
This is no git repository, not updating .git_version
if [ -n "$NO_VERSION" ] ; then \
./make_version -g ./.git_version -c ./ceph_ver.h -n ; \
else \
./make_version -g ./.git_version -c ./ceph_ver.h ; \
fi
This is no git repository, not updating .git_version
CXX      erasure-code/jerasure/libec_jerasure_generic_la-ErasureCodeJerasure.lo
CXXLD    libec_jerasure_generic.la
CXX      erasure-code/jerasure/libec_jerasure_sse3_la-ErasureCodeJerasure.lo
CXXLD    libec_jerasure_sse3.la
CXX      erasure-code/jerasure/libec_jerasure_sse4_la-ErasureCodeJerasure.lo
CXXLD    libec_jerasure_sse4.la
CXXLD    liberasure_code.la
CXXLD    librados.la
..............
..............
writing... rados.8 { } ceph-fuse.8 { } ceph-syn.8 { } ceph-disk.8 { } rbd.8 { } crushtool.8 { } radosgw.8 { } ceph-rest-api.8 { } ceph-deploy.8 { } ceph-osd.8 { } ceph-conf.8 { } rbd-replay-prep.8 { } ceph-detect-init.8 { } rbdmap.8 { } radosgw-admin.8 { } ceph-dencoder.8 { } osdmaptool.8 { } ceph-post-file.8 { } rbd-replay.8 { } ceph-mds.8 { } ceph-rbdnamer.8 { } rbd-fuse.8 { } librados-config.8 { } ceph-run.8 { } ceph-authtool.8 { } ceph.8 { } rbd-replay-many.8 { } rbd-nbd.8 { } ceph-mon.8 { } mount.ceph.8 { } ceph-clsinfo.8 { } ceph-create-keys.8 { } monmaptool.8 { } rbd-mirror.8 { } ceph-debugpack.8 { } cephfs.8 { }
build succeeded.
make[1]: Leaving directory `/home/bop/jewel/man'
Making all in doc
make[1]: Entering directory `/home/bop/jewel/doc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/bop/jewel/doc'
Making all in systemd
make[1]: Entering directory `/home/bop/jewel/systemd'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/bop/jewel/systemd'

Когда он работает, я вижу, что загрузка ЦП очень низкая, но загрузка диска довольно высокая. Весь процесс занимает у меня около 30 минут.

Я не думаю, что это приемлемо. Как я могу уменьшить стоимость?

Спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector