обычно я бы сделал что-то с эффектом:
$(DEBUGGER) ./simulator
затем
$ make DEBUGGER=gdb --args
$ make DEBUGGER=valgrind
$ make # should still work without the debugger.
(технически --args не нужен для такой команды, как она есть, но если вы добавите аргументы в симулятор в будущем.)
но использование LD_PRELOAD усложняет это, потому что вы, вероятно, не хотите, чтобы gdb загружал libclient
gdb -ex 'set env LD_PRELOAD=/home/Juggler/client/clients.so' -ex 'run' ./simulator
Кроме того, нормально связывать разделяемые библиотеки через gcc через gcc -shared -o client.so