gcc fatal error: no input files with libcurl
gcc fatal error: no input files with libcurl
我想编译 libcurl 的示例之一 (download)。我用 shell 脚本试了一下。
#!/bin/bash
export CC=~/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc
export XTOOLS_INCLUDE=$HOME/x-tools/$($CC -dumpmachine)/include
export XTOOLS_LIB=$HOME/x-tools/$($CC -dumpmachine)/lib
$CC -I$XTOOLS_INCLUDE -L$XTOOLS_LIB progressfunc.c -I$XTOOLS_INCLUDE -L$XTOOLS_LIB -lcurl
然后我启动脚本并得到以下错误:
$ ./make.sh
x86_64-unknown-linux-gnu-gcc: fatal error: no input files
compilation terminated.
shell 脚本的最后一行是否有误?
编辑 #1:我将 CPP 和 CXX 更改为 CC。
编辑 #2:我将 XTOOLS_LIBS 更改为 XTOOLS_LIB。
您声明变量 XTOOLS_LIBS
但使用 XTOOLS_LIB
,它是空的。结果,文件名被视为库路径 -L progressfunc.c
。小心。
Libcurl 依赖于许多其他库,需要一个静态标志 -DCURL_STATICLIB。所以最好使用pkg-config。这是一个工作脚本。如果 CPP/CXX/EXECUTABLE_SUFFIX/PREFIX 设置正确并且 -lpthread 被删除,它也适用于 MinGW。
#!/bin/bash
export CC=~/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc
export CXX=~/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-g++
export exe_suffix=""
export PREFIX=$HOME/x-libs/$($CC -dumpmachine)
#echo "--" PREFIX=$PREFIX
export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
#echo "--" PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR
export CPPFLAGS=""
#echo "--" CPPFLAGS=$CPPFLAGS
export LDFLAGS=""
#echo "--" LDFLAGS=$LDFLAGS
export LDLIBS="$(pkg-config --libs --static libcurl)"
#echo "--" LDLIBS=$LDLIBS
export CFLAGS="$(pkg-config --cflags --static libcurl)"
#echo "--" CFLAGS=$CFLAGS
export CXXFLAGS="$CFLAGS"
#echo "--" CXXFLAGS=$CXXFLAGS
export pkg_config_cc="$CFLAGS $LDLIBS"
#echo "--" pkg_config_cc=$pkg_config_cc
export pkg_config_cxx="$CXXFLAGS $LDLIBS"
#echo "--" pkg_config_cxx=$pkg_config_cxx
export ldflags_cc="-w -g3 -std=c11"
#echo "--" ldflags_cc=$ldflags_cc
export ldflags_cxx="-w -g3 -std=c++17"
#echo "--" ldflags_cxx=$ldflags_cxx
export command="$CC $CPPFLAGS $LDFLAGS $ldflags_cc progressfunc.c -o progressfunc-$($CC -dumpmachine)$exe_suffix $pkg_config_cc -lpthread"
echo "--" command=$command
$command
echo
我想编译 libcurl 的示例之一 (download)。我用 shell 脚本试了一下。
#!/bin/bash
export CC=~/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc
export XTOOLS_INCLUDE=$HOME/x-tools/$($CC -dumpmachine)/include
export XTOOLS_LIB=$HOME/x-tools/$($CC -dumpmachine)/lib
$CC -I$XTOOLS_INCLUDE -L$XTOOLS_LIB progressfunc.c -I$XTOOLS_INCLUDE -L$XTOOLS_LIB -lcurl
然后我启动脚本并得到以下错误:
$ ./make.sh
x86_64-unknown-linux-gnu-gcc: fatal error: no input files
compilation terminated.
shell 脚本的最后一行是否有误?
编辑 #1:我将 CPP 和 CXX 更改为 CC。
编辑 #2:我将 XTOOLS_LIBS 更改为 XTOOLS_LIB。
您声明变量 XTOOLS_LIBS
但使用 XTOOLS_LIB
,它是空的。结果,文件名被视为库路径 -L progressfunc.c
。小心。
Libcurl 依赖于许多其他库,需要一个静态标志 -DCURL_STATICLIB。所以最好使用pkg-config。这是一个工作脚本。如果 CPP/CXX/EXECUTABLE_SUFFIX/PREFIX 设置正确并且 -lpthread 被删除,它也适用于 MinGW。
#!/bin/bash
export CC=~/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc
export CXX=~/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-g++
export exe_suffix=""
export PREFIX=$HOME/x-libs/$($CC -dumpmachine)
#echo "--" PREFIX=$PREFIX
export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
#echo "--" PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR
export CPPFLAGS=""
#echo "--" CPPFLAGS=$CPPFLAGS
export LDFLAGS=""
#echo "--" LDFLAGS=$LDFLAGS
export LDLIBS="$(pkg-config --libs --static libcurl)"
#echo "--" LDLIBS=$LDLIBS
export CFLAGS="$(pkg-config --cflags --static libcurl)"
#echo "--" CFLAGS=$CFLAGS
export CXXFLAGS="$CFLAGS"
#echo "--" CXXFLAGS=$CXXFLAGS
export pkg_config_cc="$CFLAGS $LDLIBS"
#echo "--" pkg_config_cc=$pkg_config_cc
export pkg_config_cxx="$CXXFLAGS $LDLIBS"
#echo "--" pkg_config_cxx=$pkg_config_cxx
export ldflags_cc="-w -g3 -std=c11"
#echo "--" ldflags_cc=$ldflags_cc
export ldflags_cxx="-w -g3 -std=c++17"
#echo "--" ldflags_cxx=$ldflags_cxx
export command="$CC $CPPFLAGS $LDFLAGS $ldflags_cc progressfunc.c -o progressfunc-$($CC -dumpmachine)$exe_suffix $pkg_config_cc -lpthread"
echo "--" command=$command
$command
echo