2015-03-17 2 views
0

Я создал рабочую программу, которая сгенерировала изображение с определенной строкой. Он полностью работает на моем дистрибутиве Slackware 32bit, а другие дистрибутивы также 32bit.qrencode - ошибка сегментации (ядро сбрасывается)

Теперь мне нужно реализовать его на клиентской машине, которая является AIX powerpc. Он скомпилирован без каких-либо проблем и, похоже, работает (каждая другая функция работает и дает правильные результаты), за исключением случаев, когда я называю эти 2 функции «QRcode_encodeString» и «QRcode_encodeData». Он продолжает давать мне ошибку сегментации.

Вы можете предположить, мой основной() только в том, что вызов функции:

#include <stdio.h> 
#include <qrencode.h> 

int main(void) 
{ 
    QRcode* pQRC = QRcode_encodeString("abc", 0, QR_ECLEVEL_L, QR_MODE_8, 0);  
    return 0; 
} 

У меня нет GDB на клиентской машине и без корня собств. Он работает с «QRcode_encodeStringMQR()», который генерирует микро-QR-код, но это не решение для меня. Он генерирует файл дампа по имени «core», который я не могу использовать, поскольку на этом компьютере нет gdb ... И я предполагаю, что не могу открыть его на другой машине, так как они не разделяют такой же архитектуры. У меня буквально нет подсказки о том, как устранить эту проблему ...

Опять же, этот код работает на моем дистрибутиве Slackware.

Мои знания о powerpc и AIX ограничены этим опытом, к сожалению.

Я забыл упомянуть, только куб.см доступен, и я компиляции, как это:

cc qrgen.c -lqrencode -L/usr/local/lib -I/usr/local/include 
+1

Есть намного больше людей AIX, которые болтаются на http://itoolbox.com. На сайте есть функция «Группы». Ищите как Unix, так и AIX. Должно быть что-то вроде 'dbx', что эквивалентно' gdb'. Я думаю, что подходящее работает, поэтому попробуйте найти dbx или debug. Удачи. – shellter

+0

Большое спасибо! Вы правы, мне нужно использовать dbx, а не gdb, я понятия не имел. Теперь я могу найти эту отвратительную ошибку! – Vcoder

ответ

0

Я нашел проблему ... Установка Либерал генерируемый проблемы и вызвал вызвал символические ссылки существовать как простой файл и библиотека просто не было there ...

Это недостающий файл "/usr/local/lib/libqrencode.so.3.4.4", который является самим кодом ... Я смотрел файлы и не замечал этого, потому что был файл libqrencode.so.3.4, но этот файл был помехой для символической ссылки на libqrencode.so.3.4.4, поскольку libqrencode.so.3.4.4 не существовал, вместо того, чтобы сбой символической ссылки был создан пустой файл с тем же именем ...

1

Просто для информации, я был в состоянии собрать его на Linux на окружающую среду питания и работает нормально, без ошибка сегментации. Машина: Power8 ОС: Ubuntu 15,04

[email protected]:~/qr$ cat hello.c 
#include <stdio.h> 
#include <qrencode.h> 

int main(void) 
{ 
    QRcode* pQRC = QRcode_encodeString("abc", 0, QR_ECLEVEL_L, QR_MODE_8, 0);  
    return 0; 
} 

[email protected]:~/qr$ gcc hello.c -lqrencode 

[email protected]:~/qr$ ./a.out 

[email protected]:~/qr$ strace ./a.out 
execve("./a.out", ["./a.out"], [/* 20 vars */]) = 0 
brk(0)         = 0x1003f690000 
access("/etc/ld.so.nohwcap", F_OK)  = -1 ENOENT (No such file or directory) 
access("/etc/ld.so.preload", R_OK)  = -1 ENOENT (No such file or directory) 
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 
fstat(3, {st_mode=S_IFREG|0644, st_size=42765, ...}) = 0 
mmap(NULL, 42765, PROT_READ, MAP_PRIVATE, 3, 0) = 0x3fff816c0000 
close(3)        = 0 
access("/etc/ld.so.nohwcap", F_OK)  = -1 ENOENT (No such file or directory) 
open("/usr/lib/powerpc64le-linux-gnu/libqrencode.so.3", O_RDONLY|O_CLOEXEC) = 3 
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\25\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 
fstat(3, {st_mode=S_IFREG|0644, st_size=67496, ...}) = 0 
mmap(NULL, 131832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3fff81690000 
mmap(0x3fff816a0000, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x3fff816a0000 
close(3)        = 0 
access("/etc/ld.so.nohwcap", F_OK)  = -1 ENOENT (No such file or directory) 
open("/lib/powerpc64le-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\25\0\1\0\0\[email protected]\2\0\0\0\0\0"..., 832) = 832 
fstat(3, {st_mode=S_IFREG|0755, st_size=1789000, ...}) = 0 
mmap(NULL, 1860208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3fff814c0000 
mmap(0x3fff81670000, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a0000) = 0x3fff81670000 
close(3)        = 0 
mprotect(0x3fff81670000, 65536, PROT_READ) = 0 
mprotect(0x3fff816a0000, 65536, PROT_READ) = 0 
mprotect(0x10010000, 65536, PROT_READ) = 0 
mprotect(0x3fff81720000, 65536, PROT_READ) = 0 
munmap(0x3fff816c0000, 42765)   = 0 
brk(0)         = 0x1003f690000 
brk(0x1003f6c0000)      = 0x1003f6c0000 
exit_group(0)       = ? 
+++ exited with 0 +++ 
+0

Думаю, я понял это, не могли бы вы сказать мне, если ваш ubuntu 32 или 64 бит? – Vcoder

Смежные вопросы