Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用dpkg buildpackage(或Debild)时链接错误_C++_Gcc_Makefile_Ld_Dpkg - Fatal编程技术网

C++ 使用dpkg buildpackage(或Debild)时链接错误

C++ 使用dpkg buildpackage(或Debild)时链接错误,c++,gcc,makefile,ld,dpkg,C++,Gcc,Makefile,Ld,Dpkg,我正试图为一个旧项目构建一个Debian包,但我遇到了一个非常奇怪的错误 当通过make命令使用给定的Makefile时,程序会自动生成,不会出错。但是,当我使用dpkg buildpackage-us-uc或debaild-us-uc构建包时,我会多次遇到此错误(在不同的文件上): 它表示未找到main,但在使用make构建时,不会出现此问题。请注意,它在两天前工作得非常好,但昨天停止了工作 下面是gcc-v的输出: Using built-in specs. COLLECT_GCC=gcc

我正试图为一个旧项目构建一个Debian包,但我遇到了一个非常奇怪的错误

当通过
make
命令使用给定的Makefile时,程序会自动生成,不会出错。但是,当我使用
dpkg buildpackage-us-uc
debaild-us-uc
构建包时,我会多次遇到此错误(在不同的文件上):

它表示未找到main,但在使用
make
构建时,不会出现此问题。请注意,它在两天前工作得非常好,但昨天停止了工作

下面是gcc-v的输出:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' 
--with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs 
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu 
--enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object 
--disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin 
--enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre 
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar 
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic 
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu 
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

我没有发布任何代码,因为它很长(甚至是Makefile),而且问题不应该出现在那里,因为它在使用
make
时起作用。我终于发现了问题:
debuild
dpkg buildpackage
将环境变量
CFLAGS
初始化为某个值,我的Makefile使用
-e
选项调用其他Makefile。这些makefile正在使用
-c…
选项初始化
CFLAGS
,但是
make
-e
选项通过环境中已经定义的变量覆盖局部变量。因此,
CFLAGS
有一个没有
-c
选项的值,并构建了一个二进制文件而不是一个对象文件。这就是为什么
ld
在程序中找不到main

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' 
--with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs 
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu 
--enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object 
--disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin 
--enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre 
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar 
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic 
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu 
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)