Unsolved Problem in Deploying and Running Application on Ubuntu.
-
I create a application on ubuntu 16.04 using Qt Based on Qt 5.7.0 and when i run it on my virtual machine ubuntu 14.04 os using soduku-solver.sh script it gives me error.
- Content of soduku-solver.sh
#!/bin/sh
LD_LIBRARY_PATH=pwd
/Qt_Libraries
export LD_LIBRARY_PATH
./soduku-solver-
Error on terminal while running soduku-solver.sh:
link here or
-
Structure of directory:
link here or
-
Files inside Qt_Libraries folder:
link here or
Help me to deploy this app..for more information project is available here.
-
@Girishkuniyal Change
LD_LIBRARY_PATH= pwd/Qt_Libraries
to
LD_LIBRARY_PATH= $(pwd)/Qt_Libraries
pwd in pwd/Qt_Libraries is not executed as a command! It is just a string. You have to tell the shell to execute pwd and put its output there. You can either use $(COMMAND) or
`COMMAND`
-
@jsulm I used $PWD/Qt_Libraries and ./Qt_Libraries too.but error is same.
-
@Girishkuniyal Remove the blank after = in:
LD_LIBRARY_PATH= $PWD/Qt_Libraries
-
@jsulm
Now I got this error
Segmentation fault (core dumped) -
@Girishkuniyal
Make sure there is no space after=
sign:LD_LIBRARY_PATH=$PWD/Qt_Libraries
Try printing
LD_LIBRARY_PATH
usingecho
-
@p3c0 Now it shows the path of Qt_LIbraries
/home/gman/soduku-solver deploy/Qt_Libraries -
@Girishkuniyal
In your code I see a lots of hardcoded paths. Are you sure those are all present on the deployment machine ? -
Yes but how to manage this hardcoded path when we are sending my application to another pc. @p3c0
-
@Girishkuniyal If they are just images then put them inside resource files which then automatically gets embedded into your app's binary after compilation.
But for now first make sure these paths are not causing the seg fault. I didnt check all the files. -
can I remove this statements from our code like
QPixmap qpic("/home/torrent/build-soduku-solver-Desktop_Qt_5_7_0_GCC_64bit-Debug/images/brain.png");
after removing this i could get errors -
@Girishkuniyal Dont remove that whole line just replace the paths with existing paths present on deployment machine. For eg. you can keep these images inside your deployment folder i.e where your binary is present.
-
should i create another directory named resources under soduku-solver deploy folder and place all graphic image under it? and gives that path in our code with respect to binary. @p3c0
-
@Girishkuniyal No problem for now. But remember using Qt's Resource system in the future to avoid cross deployment problems.
-
@Girishkuniyal You could also check using
strace
to check what files are being opened and that they are found. Try this:
strace -e open yourbinary
-
-
@Girishkuniyal No.. Run it on your binary and not your script. Put that inside your shell script.
-
Now Output is http://paste.ubuntu.com/23202346/ @p3c0
-
@Girishkuniyal I had said to put it inside your script because you set
LD_LIBRARY_PATH
there. Due to this you can see the binary was not able to resolve the Qt library paths.
Anyway if you decide to run it directly make sure you exportLD_LIBRARY_PATH
on the terminal just before running thestrace
. This will make sure the library path is set.
Paste that output.
i.e whatever you do inside the script, run that directly on the terminal line by line except the first line#!/bin/sh
-
Now The Output is http://paste.ubuntu.com/23202369/