未定义参考_gzopen等(Undefined reference to _gzopen etc)

2019-10-17 08:41发布

您好我有在建非Windows机器下的程序(Ubuntu的机器,我想,但可能是MAC OS以及)。

我做了一个快速环顾四周,试图cygwin的(安装了Cygwin,使用的终端转到含c程序,并呼吁对该目录。)

这产生了:

$ make
g++ -lz -Wextra -O3 -o bin/lda src/lda_main.o src/data.o src/lda.o c/lda_init.o
   src/lda_io.o src/lda_sampler.o src/opts.o

src/data.o:data.cpp:(.text+0x5d): undefined reference to `_gzopen'
src/data.o:data.cpp:(.text+0x9e): undefined reference to `_gzgets'
src/data.o:data.cpp:(.text+0x138): undefined reference to `_gzgets'
src/data.o:data.cpp:(.text+0x1f0): undefined reference to `_gzgets'
src/data.o:data.cpp:(.text+0x257): undefined reference to `_gzclose'
src/data.o:data.cpp:(.text+0x3cb): undefined reference to `_gzopen'
src/data.o:data.cpp:(.text+0x498): undefined reference to `_gzgets'
src/data.o:data.cpp:(.text+0x4b4): undefined reference to `_gzclose'

/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: src/data.o:
   bad reloc address 0x1c in section `.eh_frame'
collect2: ld returned 1 exit status
Makefile:16: recipe for target `lda' failed
make: *** [lda] Error 1

我有GCC G ++安装以及zlib的。

然后我用在正确的目录的mingw32-做出尝试的mingw32。 返回一个错误比眼快可以看到: ld.exe: cannot find -lz

有什么建议么? 请记住,我对训练的经济学家,我们知道这是:-)多么有用。 简单的将我走多远。

Answer 1:

更改makefile文件,这样-lz目标文件的列表后,来了。

使用命令行:

g++ -lz -Wextra -O3 -o bin/lda src/lda_main.o src/data.o src/lda.o src/lda_init.o
   src/lda_io.o src/lda_sampler.o src/opts.o

该库将不会被搜索的各种对象文件需要外部引用。 如果你安排一下这样的命令是这样的:

g++ -Wextra -O3 -o bin/lda src/lda_main.o src/data.o src/lda.o src/lda_init.o
   src/lda_io.o src/lda_sampler.o src/opts.o -lz

然后libz将搜索该目标文件需要任何外部引用。



文章来源: Undefined reference to _gzopen etc