gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient mysql.c -o mysql
все компиляется, линкуется нормально. Стоит сделать так
gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib -static -lmysqlclient mysql.c -o mysql
/tmp/ccFATyET.o: In function `main':
mysql.c:(.text+0x10): undefined reference to `mysql_get_client_info'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
Есть проект, который в качестве системы сборки использует automake. В этот проект был дописан код, который использует сторонние разделяемые либы. В случае с хелловродными примерами я просто указывал компилятору, какие либы подключать с помощью -l<library>. А в случае с automake куда это нужно втыкать? Греппинг проекта на предмет строк вида
Хочется использовать qt creator просто как IDE для разработки на чистом Си консольного приложения. Какие настройки для этого нужно сделать? Импортировал проект, написал Makefile. Собирать-запускать удается вполне успешно. А как дебажить? При нажатии соответствующей кнопки вылазит окошко с нехорошей надписью
Это не похоже на отладочную сборку.
Установка точек останова по имени файла и строке может не работать.
Секция .debug_info: Не найдена.
Секция .debug_abbrev: Не найдена.
Секция .debug_line: Не найдена.
Секция .debug_str: Не найдена.
Секция .debug_loc: Не найдена.
Секция .debug_range: Не найдена.
Секция .gdb_index: Не найдена.
Секция .note.gnu.build-id: Найдена.
Секция .gnu.hash: Найдена.
Секция .gnu_debuglink: Не найдена.
Слышал байку, что композитные менеджеры сжирают батарейку несколько медленней, чем некомпозитные, мол на gpu более энергоэффективная обработка. Правда ли это, мой xmonad сожрет батарею быстрей, чем compiz? Можно ли это поправить, прикрутив какой-нибудь compton?
Есть сервер 1, который может принимать сообщения по сети от клиентов 2,3 и 4. В худшем случае все три клиента могут отправить сообщения одновременно. Во-первых, можно ли обойтись одним сокетом, открытым на 1 или нужна многопоточность? Во вторых, как определять размер данных которые нужно считать из сокета? И, наконец, как разграничивать сообщения между собой? Т.е если 2 записал в сокет сообщение длиной 2 байта, и сразу 3 записал сообщение длиной 10 байт. Как определить, что нужно считать сначала 2 байта, обработать, а затем считывать уже 10? Реализован ли необходимый функционал в фреймфорках вроде ZeroMQ? Сообщения предполагается передавать в формате JSON.
int osmo_hexparse(const char *str, uint8_t *b, int max_len)
{
int i, l, v;
l = strlen(str);
if ((l&1) || ((l>>1) > max_len))
return -1;
memset(b, 0x00, max_len);
for (i=0; i<l; i++) {
char c = str[i];
if (c >= '0' && c <= '9')
v = c - '0';
else if (c >= 'a' && c <= 'f')
v = 10 + (c - 'a');
else if (c >= 'A' && c <= 'F')
v = 10 + (c - 'A');
else
return -1;
b[i>>1] |= v << (i&1 ? 0 : 4);
}
return i>>1;
}
Вторым аргументом я в неё передаю вот такую переменную
uint8_t *b = malloc(20);
Память выделяется успешно, проверял, обратиться можно к любому байту. Вызов osmo_hexparse отрабатывает успешно, возвращает 20. Да вот беда, после этого вызова обращение к любому байту b кроме b[0] вызывает сегфолт. Чего такого нехорошего сделала данная ф-ция с массивом
Есть некоторый сервис (mobile из пакета osmocombb) висит на 4247 порту, управляется интерактивно с помощью telnet при помощи набора внутренних команд. Вопрос, как из сторонней самописной программы заставить этот сервис исполнить одну из своих внутренних команд? Я так понимаю, самый простой способ - это воспользоваться этим самым telnet. Только как отказаться от интерактивности, как послать одиночную команду?
Есть вот такой вот конфиг для xmonad http://pastebin.com/TRwTcDQL
Автор очень симпатично реализовал вывод инф-ции с помощью dzen2. Проблемы начались, когда я подключил к ноутбуку внешний монитор, использовался xrandr. Сразу выяснились две проблемы. Во первых dzen-уведомления отображаются только на самом левом в xrandr-овской конфигурации мониторе. Во вторых разрешение экрана читается с монитора ноутбука (screen 0), а так как разрешение используется для отрисовки, то если самый левый монитор - это sreen 1 (внешний монитор), то получается не очень красиво, dzen панельки рисуются где-то посредине экрана. Вот ф-ция чтения разрешения
getScreenRes :: String -> Int -> IO Res
getScreenRes d n = do
dpy <- openDisplay d
r <- liftIO $ getScreenInfo dpy
closeDisplay dpy
return $ Res
{ xRes = fromIntegral $ rect_width $ r !! n
, yRes = fromIntegral $ rect_height $ r !! n
}
-- Screen Resolution
data Res = Res
{ xRes :: Int
, yRes :: Int
}
Есть n=0 то получается информация об экране ноута, n=1 - для внешнего монитора, зачем нужен первый аргумент я не понял
А хочется, чтоб было вот так http://www.haskell.org/wikiupload/archive/9/93/20130817225426!Nnoells_full_de... . То есть, чтоб на каждом мониторе свой набор уведомлений dzen, выводящий инфу именно для этого монитора согласно конфигурации и разрешению этого монитора. ЗЫ Товарищь, который сделал этот скрин, использует софтину от nVidia. У ментя интел, так что такой возможности нет.
Снимаю по сети видео с обычной вебки подключенной к gumstix через USB. Есть мануал для специальный вебки http://wiki.gumstix.org/index.php?title=Caspa_camera_boards. С jpg все получилось на ура. Все игры с созданием пайпов и заданием форматов заканчиваются одинаково
Unable to parse format: Invalid argument (22)
Это связано с тем , что я использую другую камеру? Или это проблема мануала?
Есть SD адаптер для microsd карт. Беда в том, что монтируется он только для чтения. Там был когда-то рычажек, но он давно отвалился. Есть ли возможность починить адаптер?
Есть армовая борда (gumstix), к которой подсоединена web-камера. Задача - пересылать с этой борды по сети видео на ПК, на котором его нужно обработать с помощью opencv. Как это проще/правильнее реализовать? Можно ли пробросить устройство, так чтоб на ПК был какой-нибудь /dev/gumstix_camera и работать уже с ним? Или использовать какой-либо видео-стример. Пробовал mjpg-streamer - крайне противная сборка и неудовлетворительная производительность (5 fps).
Фишка в том, что первая sendto срабатывает на ура, байты уходят в сокет вполне успешно. А вот второй sendto заканчивается
Cannot write data to socket:No such file or directory.
На момент завершения работы программы файл сокета существует. Права тоже позволяют запись. На другой стороне между двумя симметричными recvfrom никаких операций над файлом не производится.
make[1]: вход в каталог «/home/likan/GSM/osmocom-bb/src/target/firmware»
CC apps/hello_world/main.o
In file included from /opt/toolchain/arm-elf/arm-linux-gnueabihf/libc/usr/include/endian.h:60:0,
from /opt/toolchain/arm-elf/arm-linux-gnueabihf/libc/usr/include/sys/types.h:219,
from include/stdio.h:8,
from apps/hello_world/main.c:24:
/opt/toolchain/arm-elf/arm-linux-gnueabihf/libc/usr/include/bits/byteswap.h: В функции «__bswap_32»:
/opt/toolchain/arm-elf/arm-linux-gnueabihf/libc/usr/include/bits/byteswap.h:45:1: пока не реализовано: Thumb-1 hard-float VFP ABI
{
^
In file included from ../../shared/libosmocore/include/osmocom/core/msgb.h:25:0,
from include/comm/sercomm.h:4,
from apps/hello_world/main.c:41:
../../shared/libosmocore/include/osmocom/core/msgb.h: В функции «msgb_alloc_headroom»:
../../shared/libosmocore/include/osmocom/core/utils.h:40:51: предупреждение: typedef «dummyheadroom_bigger» locally defined but not used [-Wunused-local-typedefs]
#define osmo_static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1];
^
../../shared/libosmocore/include/osmocom/core/msgb.h:386:2: замечание: in expansion of macro «osmo_static_assert»
osmo_static_assert(size > headroom, headroom_bigger);
^
apps/hello_world/main.c: В функции «l1a_l23_rx_cb»:
apps/hello_world/main.c:62:35: предупреждение: параметр «dlci» не используется [-Wunused-parameter]
static void l1a_l23_rx_cb(uint8_t dlci, struct msgb *msg)
^
apps/hello_world/main.c: В функции «key_handler»:
apps/hello_world/main.c:172:7: предупреждение: неиспользуемая переменная «test» [-Wunused-variable]
char test[16];
^
Makefile.inc:186: ошибка выполнения рецепта для цели «apps/hello_world/main.o»
make[1]: *** [apps/hello_world/main.o] Ошибка 1
Хоть убейте, не вижу где ошибка. Ворнингов да, навалом, а ошибка-то где?
Сборка OsmocomBB заканчивается вот такой вот ерундой
$ make -e CROSS_TOOL_PREFIX=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/bin/arm-linux-gnueabihf-
.
.
.
/home/likan/GSM/osmocom-bb/src/target/firmware/include/asm/swab.h: Assembler messages:
/home/likan/GSM/osmocom-bb/src/target/firmware/include/asm/swab.h:32: Error: no such instruction: `eor %edx,%r9d,%r9d,ror'
Makefile:477: ошибка выполнения рецепта для цели «gsmtap_util.lo»
...
Полный лог http://pastebin.com/LhYYGZwL
Такое ощущение, что не подцепляется кроссовый тулчеин. Я ведь правильно понимаю, что еor %edx,%r9d,%r9d,ror - армовая команда?
Какой самый простой способ получить информацию от веб-камеры? В первом приближении, абсолютно не важно, какую, просто чтобы убедиться, что вебка что-то выдает. Во втором приближении сделать фотографию. Крайне желательно без использования сторонних фреймворков.