Как скомпилировать C-версию vtd-xml под linux (32 бит)

Я скачал ximpleware_2.11_c.zip (версия vtd-xml на языке C), когда я попытался скомпилировать его под Linux, я получил следующие сообщения об ошибках:

In file included from vtdNav.c:19:
vtdNav.h:82: error: expected declaration specifiers or ‘...’ before ‘FILE’
vtdNav.h:506: error: expected declaration specifiers or ‘...’ before ‘FILE’
vtdNav.h: In function ‘writeIndex_VTDNav’:

vtdNav.c: At top level:
vtdNav.c:3410: error: conflicting types for ‘writeIndex_VTDNav’
vtdNav.h:347: error: previous declaration of ‘writeIndex_VTDNav’ was here
vtdNav.c: In function ‘dumpXML’:
vtdNav.c:3554: error: too many arguments to function ‘dumpXML2’
vtdNav.c: At top level:
vtdNav.c:3562: error: conflicting types for ‘dumpXML2’
vtdNav.h:362: error: previous declaration of ‘dumpXML2’ was here 
In file included from vtdNav.c:19:
vtdNav.h:82: error: expected declaration specifiers or ‘...’ before ‘FILE’
vtdNav.h:506: error: expected declaration specifiers or ‘...’ before ‘FILE’
vtdNav.h: In function ‘writeIndex_VTDNav’:
vtdNav.h:507: error: ‘f’ undeclared (first use in this function)
vtdNav.h:507: error: (Each undeclared identifier is reported only once
vtdNav.h:507: error: for each function it appears in.)
vtdNav.h:507: error: too many arguments to function 
‘vn->__writeIndex_VTDNav’

vtdNav.h: At top level: 
vtdNav.h:675: error: expected declaration specifiers or ‘...’ before ‘FILE’
vtdNav.h:695: error: expected declaration specifiers or ‘...’ before ‘FILE’

vtdNav.c: In function ‘_writeIndex2_VTDNav’:
vtdNav.c:3751: error: too many arguments to function ‘writeIndex_VTDNav’
vtdNav.c: In function ‘dumpXML’:
vtdNav.c:3874: error: too many arguments to function ‘dumpXML2’
vtdNav.c: At top level:
vtdNav.c:3882: error: conflicting types for ‘dumpXML2’
vtdNav.h:695: error: previous declaration of ‘dumpXML2’ was here

make: *** [vtdNav.o] Error 1

Как я могу собрать его под linux?

Спасибо за ваш ответ.


person famedoro    schedule 07.01.2014    source источник
comment
Я не уверен. На 64-битной Ubuntu тоже не компилируется.   -  person Elliott Frisch    schedule 07.01.2014
comment
похоже, это проблема конкретной версии, мы скомпилировали ее на Ubuntu 64, и она отлично работает ... версия gmake 3.81, gcc 4.4.1   -  person vtd-xml-author    schedule 10.01.2014
comment
@vtd-xml-author Моя версия: Версия LSB: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch Идентификатор дистрибьютора: ScientificSL Описание: Scientific Linux SL, выпуск 5.2 (Boron ) Релиз: 5.2 Кодовое имя: Boron d   -  person famedoro    schedule 16.01.2014
comment
@vtd-xml-author gcc -v Цель: i386-redhat-linux Настроено с помощью: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info - -enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages= c, c++, objc, obj-c++, java, fortran, ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java -1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux Модель потока: posix gcc версии 4.1.2 20080704 (Red Hat 4.1.2-50)   -  person famedoro    schedule 16.01.2014
comment
@vtd-xml-author gmake -v GNU Make 3.81 Эта программа создана для i686-redhat-linux-gnu Должен ли я использовать какую-то конкретную опцию во время компиляции?   -  person famedoro    schedule 16.01.2014
comment
@vtd-xml-author Вы правы! Я пробовал gcc версии 4.4.7 20120313 (Red Hat 4.4.7-3), и это работает, как я могу скомпилировать даже gcc версии 4.1.2 20080704 (Red Hat 4.1.2-50)?   -  person famedoro    schedule 16.01.2014


Ответы (2)


я поставил

#include <stdio.h> 

in :

vtdNav.h и в transcoder.h

и теперь он компилируется.

person famedoro    schedule 16.01.2014
comment
Теперь у меня другая проблема: как мне скомпилировать примеры в c_tutorial_by_code_examples_2.11.zip. Я поместил папку c_tutorial_by_code_examples_2.11 в папку ximpleware_2.11_c/vtd-xml/ (полный путь — ximpleware_2.11_c/vtd-xml/c_tutorial_by_code_examples_2.11) и попытался скомпилировать пример 1, используя gcc -o hello_world hello_world .c -lm с этой ошибкой: /tmp/ccM50xiu.o: В функции main': hello_world.c:(.text+0x55): неопределенная ссылка tocreateVTDGen' hello_world.c:(.text+0x73): неопределенная ссылка на parseFile ' hello_world.c: возвращен 1 статус выхода - person famedoro; 17.01.2014

Извините, что разместил пост, чтобы спросить, как скомпилировать примеры. Я скомпилировал их, изменив make-файл, уже присутствующий в ximpleware_2.11_c, и таким образом работает:

CC=gcc

CFLAGS= -c -O3 -Wall -Winline -fgnu89-inline -fomit-frame-pointer-fforce-addr -frerun-cse-after-loop -fexpensive-optimizations -fregmove -frerun-loop-opt -fmerge-all-constants -fno-branch-count-reg -funroll-loops -fpeephole -march=core2-falign-functions -falign-loops -falign-jumps -freorder-blocks -freorder-functions-fprefetch-loop-arrays -funswitch-loops -fbranch-target-load-optimize2 -fvpt --paraminline-unit-growth=300 --param max-inline-recursive-depth=2 --param large-function-growth=600

CFLAGS2 = -c -ggdb
LDFLAGS = -O3 -fomit-frame-pointer -fforce-addr -frerun-cse-after-loop-fexpensive-optimizations -fregmove -frerun-loop-opt -march=core2 -lm
LDFLAGS2  = -ggdb

all :  hello_world



hello_world: hello_world.o ../../arrayList.o ../../fastIntBuffer.o ../../fastLongBuffer.o ../../contextBuffer.o ../../vtdNav.o ../../vtdGen.o ../../autoPilot.o ../../XMLChar.o ../../helper.o ../../lex.yy.o ../../l8.tab.o ../../literalExpr.o ../../numberExpr.o ../../pathExpr.o ../../filterExpr.o ../../binaryExpr.o ../../unaryExpr.o ../../funcExpr.o ../../locationPathExpr.o ../../intHash.o ../../unionExpr.o ../../decoder.o ../../XMLModifier.o ../../nodeRecorder.o ../../indexHandler.o ../../bookMark.o ../../elementFragmentNs.o ../../transcoder.o ../../textIter.o ../../variableExpr.o ../../cachedExpr.o



clean:
       -rm *.o


hello_world.o : hello_world.c
        ${CC} ${CFLAGS} hello_world.c
person famedoro    schedule 17.01.2014