2014-10-19 223 views
0

当使用这个turotial:http://visualgdb.com/tutorials/raspberry/crosscompiler/VisualGDB和Raspberry Pi

我建在Visual Studio 2012的解决方案,我得到这个输出:

1>------ Build started: Project: LinuxHelloWorld, Configuration: Debug Win32 ------ 
1> VisualGDB: Attempting inline build... 
1> VisualGDB: Run "cmd.exe /c "C:\SysGCC\raspberry\bin\make.exe" CONFIG=Debug" in directory "C:\Users\Kels\LinuxHelloWorld\LinuxHelloWorld" on local computer 
1> make: *** No targets specified and no makefile found. Stop. 
1> ------------------------------------------------------------- 
1> Command exited with code 2 
1> Executable: cmd.exe 
1> Arguments: /c "C:\SysGCC\raspberry\bin\make.exe" CONFIG=Debug 
1> Directory: C:\Users\Kels\LinuxHelloWorld\LinuxHelloWorld 
1>VisualGDB : error : Command-line action failed 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command ""C:\Program Files (x86)\Sysprogs\VisualGDB\VisualGDB.exe" /build "C:\Users\Kels\LinuxHelloWorld\LinuxHelloWorld\LinuxHelloWorld.vcxproj" "/solution:C:\Users\Kels\LinuxHelloWorld\LinuxHelloWorld.sln" "/config:Debug" "/platform:Win32"" exited with code 1. 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我什么,下一步将是命令行失败困惑。 提前致谢!

新增10/20。 Makefile文件在C:\用户\ Kels \ LinuxHelloWorld \ LinuxHelloWorld

#Generated by VisualGDB project wizard. 
#Note: VisualGDB will automatically update this file when you add new sources to the project. 
#All other changes you make in this file will be preserved. 
#Visit http://visualgdb.com/makefiles for more details 

#VisualGDB: AutoSourceFiles  #<--- remove this line to disable auto-updating of SOURCEFILES and EXTERNAL_LIBS 

TARGETNAME := LinuxHelloWorld 
#TARGETTYPE can be APP, STATIC or SHARED 
TARGETTYPE := APP 

to_lowercase = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) 

CONFIG ?= DEBUG 

CONFIGURATION_FLAGS_FILE := $(call to_lowercase,$(CONFIG)).mak 

    include $(CONFIGURATION_FLAGS_FILE) 
include $(ADDITIONAL_MAKE_FILES) 

ifeq ($(BINARYDIR),) 
error: 
    $(error Invalid configuration, please check your inputs) 
endif 

SOURCEFILES := LinuxHelloWorld.cpp 
EXTERNAL_LIBS := 
EXTERNAL_LIBS_COPIED := $(foreach lib, $(EXTERNAL_LIBS),$(BINARYDIR)/$(notdir $(lib))) 

CFLAGS += $(COMMONFLAGS) 
CXXFLAGS += $(COMMONFLAGS) 
ASFLAGS += $(COMMONFLAGS) 
LDFLAGS += $(COMMONFLAGS) 

CFLAGS += $(addprefix -I,$(INCLUDE_DIRS)) 
CXXFLAGS += $(addprefix -I,$(INCLUDE_DIRS)) 

CFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) 
CXXFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) 
ASFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) 

CXXFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) 
CFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) 
LDFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) 

LDFLAGS += $(addprefix -L,$(LIBRARY_DIRS)) 

ifeq ($(GENERATE_MAP_FILE),1) 
LDFLAGS += -Wl,-Map=$(BINARYDIR)/$(basename $(TARGETNAME)).map 
endif 

LIBRARY_LDFLAGS = $(addprefix -l,$(LIBRARY_NAMES)) 

ifeq ($(IS_LINUX_PROJECT),1) 
    RPATH_PREFIX := -Wl,--rpath='$$ORIGIN/../ 
    LIBRARY_LDFLAGS += $(EXTERNAL_LIBS) 
    LIBRARY_LDFLAGS += -Wl,--rpath='$$ORIGIN' 
    LIBRARY_LDFLAGS += $(addsuffix ',$(addprefix $(RPATH_PREFIX),$(dir $(EXTERNAL_LIBS)))) 

    ifeq ($(TARGETTYPE),SHARED) 
     CFLAGS += -fPIC 
     CXXFLAGS += -fPIC 
     ASFLAGS += -fPIC 
     LIBRARY_LDFLAGS += -Wl,-soname,$(TARGETNAME) 
    endif 

    ifneq ($(LINUX_PACKAGES),) 
     PACKAGE_CFLAGS := $(foreach pkg,$(LINUX_PACKAGES),$(shell pkg-config --cflags $(pkg))) 
     PACKAGE_LDFLAGS := $(foreach pkg,$(LINUX_PACKAGES),$(shell pkg-config --libs $(pkg))) 
     CFLAGS += $(PACKAGE_CFLAGS) 
     CXXFLAGS += $(PACKAGE_CFLAGS) 
     LIBRARY_LDFLAGS += $(PACKAGE_LDFLAGS) 
    endif 
else 
    LIBRARY_LDFLAGS += $(EXTERNAL_LIBS) 
endif 

LIBRARY_LDFLAGS += $(ADDITIONAL_LINKER_INPUTS) 

all_make_files := $(firstword $(MAKEFILE_LIST)) $(CONFIGURATION_FLAGS_FILE) $(ADDITIONAL_MAKE_FILES) 

ifeq ($(STARTUPFILES),) 
    all_source_files := $(SOURCEFILES) 
else 
    all_source_files := $(STARTUPFILES) $(filter-out $(STARTUPFILES),$(SOURCEFILES)) 
endif 

source_obj1 := $(all_source_files:.cpp=.o) 
source_obj2 := $(source_obj1:.c=.o) 
source_obj3 := $(source_obj2:.s=.o) 
source_obj4 := $(source_obj3:.S=.o) 
source_obj5 := $(source_obj4:.cc=.o) 
source_objs := $(source_obj5:.cxx=.o) 

all_objs := $(addprefix $(BINARYDIR)/, $(notdir $(source_objs))) 

PRIMARY_OUTPUTS := 

ifeq ($(GENERATE_BIN_FILE),1) 
PRIMARY_OUTPUTS += $(BINARYDIR)/$(basename $(TARGETNAME)).bin 
endif 

ifeq ($(GENERATE_IHEX_FILE),1) 
PRIMARY_OUTPUTS += $(BINARYDIR)/$(basename $(TARGETNAME)).ihex 
endif 

ifeq ($(PRIMARY_OUTPUTS),) 
PRIMARY_OUTPUTS := $(BINARYDIR)/$(TARGETNAME) 
endif 

all: $(PRIMARY_OUTPUTS) 

$(BINARYDIR)/$(basename $(TARGETNAME)).bin: $(BINARYDIR)/$(TARGETNAME) 
    $(OBJCOPY) -O binary $< [email protected] 

$(BINARYDIR)/$(basename $(TARGETNAME)).ihex: $(BINARYDIR)/$(TARGETNAME) 
    $(OBJCOPY) -O ihex $< [email protected] 

ifeq ($(TARGETTYPE),APP) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
    $(LD) -o [email protected] $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

ifeq ($(TARGETTYPE),SHARED) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
    $(LD) -shared -o [email protected] $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

ifeq ($(TARGETTYPE),STATIC) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) 
    $(AR) -r [email protected] $^ 
endif 

-include $(all_objs:.o=.dep) 

clean: 
ifeq ($(USE_DEL_TO_CLEAN),1) 
    del /S /Q $(BINARYDIR) 
else 
    rm -rf $(BINARYDIR) 
endif 

$(BINARYDIR): 
    mkdir $(BINARYDIR) 

#VisualGDB: FileSpecificTemplates  #<--- VisualGDB will use the following lines to define rules for source files in subdirectories 
$(BINARYDIR)/%.o : %.cpp $(all_make_files) |$(BINARYDIR) 
    $(CXX) $(CXXFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.c $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.S $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.s $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.cc $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) $(CXXFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.cxx $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) $(CXXFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

#VisualGDB: GeneratedRules 

     #<--- All lines below are auto-generated 
+0

make:***没有指定目标,也没有找到makefile。停止。 – 2014-10-19 22:06:28

+0

好的,那么我该如何解决这个问题。 我进入了C:\ SysGCC \ raspberry \ bin \并且有一个make.exe。但是当我从命令行运行它时,出现以下错误:make:***没有指定目标,也没有找到makefile。停止。 – Kelsey 2014-10-19 22:08:37

+0

实际上,最有可能帮助你的人是微软和开放源代码这个相当奇怪的组合,它们是你所遵循的教程的创建者。 – 2014-10-19 22:17:32

回答

0
我还使用VisualGDB为树莓派的发展,我见过最大的插件之一

。从你的日志看来,你似乎正在使用交叉编译工具链进行构建。 你可以做的第一件事是去C:\Users\Kels\LinuxHelloWorld\LinuxHelloWorld并验证那里是否存在Makefile并检查内容(甚至可能将它们添加到问题中,以便它们可以被期望)。另一种选择是在Pi上自己设置编译,而不是使用工具链(这可以通过项目向导来完成) - 由于Pi无法与PC进行比较,所以它会变慢,但是再次,任何第三方库你可能需要(很可能你会)可以很容易地通过apt-get安装在Pi上,并且只是在你使用工具链时必须在你的PC上交叉编译它们的时候使用。

UPDATE

继承人是我的样本项目的一个例子的Makefile:

#Generated by VisualGDB project wizard. 
#Note: VisualGDB will automatically update this file when you add new sources to the project. 
#All other changes you make in this file will be preserved. 
#Visit http://visualgdb.com/makefiles for more details 

#VisualGDB: AutoSourceFiles  #<--- remove this line to disable auto-updating of SOURCEFILES and EXTERNAL_LIBS 

TARGETNAME := RpiOmxTunnelReconfiguration 
#TARGETTYPE can be APP, STATIC or SHARED 
TARGETTYPE := APP 

to_lowercase = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) 

CONFIG ?= DEBUG 

CONFIGURATION_FLAGS_FILE := $(call to_lowercase,$(CONFIG)).mak 

include $(CONFIGURATION_FLAGS_FILE) 
include $(ADDITIONAL_MAKE_FILES) 

ifeq ($(BINARYDIR),) 
error: 
    $(error Invalid configuration, please check your inputs) 
endif 

SOURCEFILES := Omx/Component.cpp Omx/ComponentPort.cpp RpiOmxTunnelReconfiguration.cpp 
EXTERNAL_LIBS := 
EXTERNAL_LIBS_COPIED := $(foreach lib, $(EXTERNAL_LIBS),$(BINARYDIR)/$(notdir $(lib))) 

CFLAGS += $(COMMONFLAGS) 
CXXFLAGS += $(COMMONFLAGS) 
ASFLAGS += $(COMMONFLAGS) 
LDFLAGS += $(COMMONFLAGS) 

CFLAGS += $(addprefix -I,$(INCLUDE_DIRS)) 
CXXFLAGS += $(addprefix -I,$(INCLUDE_DIRS)) 

CFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) 
CXXFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) 
ASFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS)) 

CXXFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) 
CFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) 
LDFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS)) 

LDFLAGS += $(addprefix -L,$(LIBRARY_DIRS)) 

LIBRARY_LDFLAGS = $(addprefix -l,$(LIBRARY_NAMES)) 

ifeq ($(IS_LINUX_PROJECT),1) 
    RPATH_PREFIX := -Wl,--rpath='$$ORIGIN/../ 
    LIBRARY_LDFLAGS += $(EXTERNAL_LIBS) 
    LIBRARY_LDFLAGS += -Wl,--rpath='$$ORIGIN' 
    LIBRARY_LDFLAGS += $(addsuffix ',$(addprefix $(RPATH_PREFIX),$(dir $(EXTERNAL_LIBS)))) 

    ifeq ($(TARGETTYPE),SHARED) 
     LIBRARY_LDFLAGS += -Wl,-soname,$(TARGETNAME) 
    endif 

else 
    LIBRARY_LDFLAGS += $(EXTERNAL_LIBS) 
endif 

LIBRARY_LDFLAGS += $(ADDITIONAL_LINKER_INPUTS) 

all_make_files := Makefile $(CONFIGURATION_FLAGS_FILE) $(ADDITIONAL_MAKE_FILES) 

ifeq ($(STARTUPFILES),) 
    all_source_files := $(SOURCEFILES) 
else 
    all_source_files := $(STARTUPFILES) $(filter-out $(STARTUPFILES),$(SOURCEFILES)) 
endif 

source_obj1 := $(all_source_files:.cpp=.o) 
source_obj2 := $(source_obj1:.c=.o) 
source_obj3 := $(source_obj2:.s=.o) 
source_objs := $(source_obj3:.S=.o) 

all_objs := $(addprefix $(BINARYDIR)/, $(notdir $(source_objs))) 

ifeq ($(GENERATE_BIN_FILE),1) 
all: $(BINARYDIR)/$(basename $(TARGETNAME)).bin 

$(BINARYDIR)/$(basename $(TARGETNAME)).bin: $(BINARYDIR)/$(TARGETNAME) 
    $(OBJCOPY) -O binary $< [email protected] 

else 
all: $(BINARYDIR)/$(TARGETNAME) 
endif 

ifeq ($(TARGETTYPE),APP) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
    $(LD) -o [email protected] $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

ifeq ($(TARGETTYPE),SHARED) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS) 
    $(LD) -shared -o [email protected] $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP) 
endif 

ifeq ($(TARGETTYPE),STATIC) 
$(BINARYDIR)/$(TARGETNAME): $(all_objs) 
    $(AR) -r [email protected] $^ 
endif 

-include $(all_objs:.o=.dep) 

clean: 
ifeq ($(USE_DEL_TO_CLEAN),1) 
    del /S /Q $(BINARYDIR) 
else 
    rm -rf $(BINARYDIR) 
endif 

$(BINARYDIR): 
    mkdir $(BINARYDIR) 

#VisualGDB: FileSpecificTemplates  #<--- VisualGDB will use the following lines to define rules for source files in subdirectories 
$(BINARYDIR)/%.o : %.cpp $(all_make_files) |$(BINARYDIR) 
    $(CXX) $(CXXFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.c $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.S $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

$(BINARYDIR)/%.o : %.s $(all_make_files) |$(BINARYDIR) 
    $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

#VisualGDB: GeneratedRules    #<--- All lines below are auto-generated 


$(BINARYDIR)/Component.o : Omx/Component.cpp $(all_make_files) |$(BINARYDIR) 
    $(CXX) $(CXXFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 


$(BINARYDIR)/ComponentPort.o : Omx/ComponentPort.cpp $(all_make_files) |$(BINARYDIR) 
    $(CXX) $(CXXFLAGS) -c $< -o [email protected] -MD -MF $(@:.o=.dep) 

正如你在这里看到的TARGETNAME := RpiOmxTunnelReconfiguration

ifeq ($(GENERATE_BIN_FILE),1) 
all: $(BINARYDIR)/$(basename $(TARGETNAME)).bin 

$(BINARYDIR)/$(basename $(TARGETNAME)).bin: $(BINARYDIR)/$(TARGETNAME) 
    $(OBJCOPY) -O binary $< [email protected] 

else 
all: $(BINARYDIR)/$(TARGETNAME) 
endif 

将始终定义输出二进制文件。也许重新创建项目。

+0

我能够在文件夹中找到Makefile。我将它添加到上面的问题。你会建议在工具链上设置汇编吗?这是我第一次使用Pi,因此我正在学习。谢谢! – Kelsey 2014-10-20 14:30:11

+0

如果项目很小,并且不需要大量的时间来编译,我认为直接在Pi上执行编译是有意义的。 – 2014-10-20 21:16:18

+0

至于make文件 - 它看起来有点奇怪,'PRIMARY_OUTPUTS'可能最终为空,然后target'all'将没有依赖关系,请检查项目设置。我看了一下我的一个示例项目,并在那里定义了输出文件,因此可能是项目设置完全错误。 – 2014-10-20 21:19:52