我正在学习SDL2,我用它制作了几个程序。 使用这些程序,当我双击可执行文件时,程序启动,一切正常。 在我制作的最后一个节目中,它不再起作用了。有了这个,我只能从终端发射。 exe有权限,所以没有理由发生这种情况......
我唯一改变的是我使用的旧通用函数文件(例如" loadTextureFromImage()" ...)到我创建的动态库。这是一个指向整个项目的链接(现在只是一个白色窗口) - > RightHere。
我目前正在运行Ubuntu 14.04。
如果你对它为什么不适用于这个项目有所了解,请告诉我!
提前谢谢你;)
PS:这是一个实际工作的项目 - > RightHere
PS2:项目在c
好的,所以我做了ldd ./myprog
,并且链接的库是我放置的地方,在" $ {HOME} / lib"中。如果我理解得很好,你告诉我,因为这些图书馆不在" / usr / lib等等......",他们不会被发现,我应该写一个脚本。有一件事我忘了告诉:我必须在.bashrc中添加一个环境变量 - > export LD_LIBRARY_PATH=${HOME}/lib
,以便在编译时找到库。因为你所说的,我认为这个变量只在终端上加载,不是吗?所以我尝试了两个脚本:
#!/bin/bash
LD_LIBRARY_PATH=$PWD
./myprog
(就像你告诉的那样)和
#!/bin/bash
LD_LIBRARY_PATH=${HOME}/lib
./myprog
(就像我在.bashrc中制作的那样)。
当我通过双击它们来运行它们时,都不起作用。 但是,当我从终端运行它们时,只有第二个工作。
感谢您的回答,希望它能帮助......
编辑:我确认.bashrc中设置的变量只在终端中加载:我测试了这个脚本 - >
#!/bin/bash
echo $LD_LIBRARY_PATH > Run.log
LD_LIBRARY_PATH=${HOME}/lib
echo $LD_LIBRARY_PATH >> Run.log
./Pong
并且,当我从终端运行它时,Run.log包含:
/home/yohan/lib
/home/yohan/lib
,
但是,当我通过双击运行它时,它只包含
*newline*
/home/yohan/lib
答案 0 :(得分:1)
在变量设置之前添加导出。 - 凯尔塔尔
好的,非常感谢你,现在可以使用这个脚本:
#!/bin/bash
export LD_LIBRARY_PATH=${HOME}/lib
./myprog